您的位置:首页 > 移动开发 > Android开发

Android(java)学习笔记66:线程的实现方案2思路以及代码实现

2015-05-16 19:55 811 查看
1. 前面说的线程的实现是新写一个子类继承Thread:

是将类声明为
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]较好的体现了面向对象的设计思想。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐