Java自学 day23_多线程15-17 笔记
15-线程生命周期图解
线程的生命周期:
新建: 创建线程对象
就绪:有执行资格,没有执行权
运行:有执行资,有执行权
阻塞: 由于一些操作让线程处于了该状态。没有执行资格,没有执行权
而另一些操作却可以把它给激话,激活后处于就绪状态
死亡:线程对象变放垃圾,等待被回收
16-多线程方式2的思路及代码实现
方式2 :实现Runnable接口
步骤:
A:自定义类MyRunnable实现Runnable接口
B:重写run()方法
C:创建MyRunnable类的对象
D:创建Thread类的对象,并把C步骤的对象作为构造参数传递
1 public class day23_16多线程方式2的思路及代码实现 { 2 3 public static void main(String[] args) { 4 // 创建MyRunnable类的对象 5 MyRunnable my = new MyRunnable(); 6 7 // 创建Thread类的对象,并把C步骤的对象(my)作为构造参数传递 8 // Thread(Runnable target)-->一个参数传的是接口,其实要的是他的子类对象 9 // Thread t1=new Thread(my); 10 // Thread t2=new Thread(my); 11 // t1.setName("虎兔"); 12 // t2.setName("兔虎"); 13 14 Thread t1 = new Thread(my, "虎兔"); 15 Thread t2 = new Thread(my, "兔虎"); 16 t1.start(); 17 t2.start(); 18 } 19 20 } 21 22 class MyRunnable implements Runnable { 23 24 @Override 25 public void run() { 26 for (int x = 0; x < 100; x++) { 27 System.out.println(Thread.currentThread().getName() + ":" + x); 28 //注意:由于实现接口的方式就不能直接使用Thread类的方法getName()了,但可以间接使用 29 } 30 31 }
17-多线程两种方式的图解比较及区别

问题:
有了方式1,为什么还来一个方式2呢?
A:可以避免由于Java单继承带来的局限性。
B:适合多个相同程序的代码去处理同一个资源的情况,把线程同程序的代码,
数据有效分离,较好的体现了面向对象的设计思想。

浙公网安备 33010602011771号