Android(java)学习笔记66:线程的实现方案2思路以及代码实现
2015-05-16 19:55
811 查看
1. 前面说的线程的实现是新写一个子类继承Thread:
是将类声明为
2.这里说的方案2是指实现一个接口:
是声明实现
这里我们主要说明2的实现方式…………
实现多线程的方式:2种
• 方式1:继承Thread类
A:自定义类MyThread继承Thread类
B:在MyThread类中重写run().
C[b]:创建MyThread类的对象.[/b]
D[b]: 启动线程对象[/b]
问题
a[b]:为什么要重写run()方法?[/b]
run()里面封装的是被线程执行的代码
b[b]:启动线程对象要哪个方法?[/b]
start()
c[b]:run()和start()方法的区别?[/b]
run()直接调用的仅仅是普通方法
start()先启动线程,再由JVM调用run()方法
• 方式2:实现Runnable接口
A[b]:自定义类MyRunnable实现Runnable接口.[/b]
B[b]:在MyRunnable里面重写run()[/b]
C:创建MyRunnable类的对象
D[b]:创建Thread类的对象,并把C步骤的对象作为构造参数传递[/b]
问题来了:有了方式1,为什么还来方式2呢 ?
a[b][b]:[/b]可以避免由于Java单继承带来的局限性.[/b]
b[b][b]:[/b]适合多个相同程序代码去处理同一个资源的情况,把线程同程序的代码、数据有效分离,[/b]较好的体现了面向对象的设计思想。
是将类声明为
Thread的子类。该子类应重写
Thread类的
run方法。接下来可以分配并启动该子类的实例
2.这里说的方案2是指实现一个接口:
是声明实现
Runnable接口的类。该类然后实现
run方法。然后可以分配该类的实例,在创建
Thread时作为一个参数来传递并启动。
这里我们主要说明2的实现方式…………
package cn.itcast_05; public class MyRunnable implements Runnable { @Override public void run() { for (int x = 0; x < 100; x++) { // 由于实现接口的方式就不能直接使用Thread类的方法了,但是可以间接的使用 System.out.println(Thread.currentThread().getName() + ":" + x); } } }
package cn.itcast_05; /* * 方式2:实现Runnable接口 * 步骤: * A:自定义类MyRunnable实现Runnable接口 * B:重写run()方法 * C:创建MyRunnable类的对象 * D:创建Thread类的对象,并把C步骤的对象作为构造参数传递 */ public class MyRunnableDemo { public static void main(String[] args) { // 创建MyRunnable类的对象 MyRunnable my = new MyRunnable(); // 创建Thread类的对象,并把C步骤的对象作为构造参数传递 // Thread(Runnable target) // Thread t1 = new Thread(my); // Thread t2 = new Thread(my); // t1.setName("林青霞"); // t2.setName("刘意"); // Thread(Runnable target, String name) Thread t1 = new Thread(my, "林青霞"); Thread t2 = new Thread(my, "刘意"); t1.start(); t2.start(); } }
实现多线程的方式:2种
• 方式1:继承Thread类
A:自定义类MyThread继承Thread类
B:在MyThread类中重写run().
C[b]:创建MyThread类的对象.[/b]
D[b]: 启动线程对象[/b]
问题
a[b]:为什么要重写run()方法?[/b]
run()里面封装的是被线程执行的代码
b[b]:启动线程对象要哪个方法?[/b]
start()
c[b]:run()和start()方法的区别?[/b]
run()直接调用的仅仅是普通方法
start()先启动线程,再由JVM调用run()方法
• 方式2:实现Runnable接口
A[b]:自定义类MyRunnable实现Runnable接口.[/b]
B[b]:在MyRunnable里面重写run()[/b]
C:创建MyRunnable类的对象
D[b]:创建Thread类的对象,并把C步骤的对象作为构造参数传递[/b]
问题来了:有了方式1,为什么还来方式2呢 ?
a[b][b]:[/b]可以避免由于Java单继承带来的局限性.[/b]
b[b][b]:[/b]适合多个相同程序代码去处理同一个资源的情况,把线程同程序的代码、数据有效分离,[/b]较好的体现了面向对象的设计思想。
相关文章推荐
- 设计模式学习笔记以及java代码实现
- Java多线程学习笔记1——线程的实现方式以及定时器的使用
- Android(java)学习笔记70:同步中的死锁问题以及线程通信问题
- Android(java)学习笔记72:线程的状态转换图以及常见执行情况
- Android(java)学习笔记200:Android中View动画之 XML实现 和 代码实现
- Android(java)学习笔记229:服务(service)之绑定服务调用服务里面的方法 (采用接口隐藏代码内部实现)
- Android(java)学习笔记258:JNI之hello.c(c代码功能实现)指针语法解析
- Android(java)学习笔记154:使用GridView以及重写BaseAdapter
- Android(java)学习笔记181:Android 服务的应用,在Activity中实现背景音乐播放
- Android(java)学习笔记201:网络图片浏览器的实现(ANR)
- Android(java)学习笔记202:Handler消息机制的原理和实现
- Android(java)学习笔记215:多线程断点下载的原理(JavaSE实现)
- Android(java)学习笔记216:多线程断点下载的原理(Android实现)
- Android(java)学习笔记218:开发一个多界面的应用程序之人品计算器的简单实现
- Animations(通过Java 代码控制) -- MarsChen Android 开发教程学习笔记
- Java 中的线程(三)-- MarsChen Java4Android 教程学习笔记
- Java 当中的线程(二)-- MarsChen Java4Android 教程学习笔记
- Java 当中的线程(一)-- MarsChen Java4Android 教程学习笔记
- Android NDK (学习笔记八) —— Java代码与C代码间方法的调用
- Android(java)学习笔记113:Android编写代码调用Vibrator震动功能(Bug:按下按钮button始终没有震动)