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