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:适合多个相同程序的代码处理同一个资源的情况,把线程同程序的代码,
数据有效分离,较好的体现了面向对象的设计思想。

 

 

 

posted @ 2020-03-23 09:18  富贵今天富贵了吗  阅读(164)  评论(0)    收藏  举报