首页 > 代码库 > java中的线程问题(三)——继承Thread VS 实现Runnable的区别

java中的线程问题(三)——继承Thread VS 实现Runnable的区别

   从java的设计来看,通过继承Thread或者实现Runnable接口来创建线程本质上没有区别,从jdk帮助文档我们可以看到Thread类本身就实现了Runnable接口,如果一定要说它们有什么区别,总结几点

    用实现Runnable接口的特点

1、用实现Runnable接口的方法创建对象可以避免java单继承机制带来的局限;

2、用实现Runnable接口的方法,可以实现多个线程共享同一段代码(数据);

因此建议大家如果你的程序有同步逻辑需求,则使用Runnable的方法来创建线程。

另外,每个线程对象只能启动一个线程:

 1 /**
 2  * 功能:使用线程的注意事项
 3  * 不论继承Thread或实现Rnunable接口都不能使用start启同一个线程2次
 4  */
 5 public class Thread04 {
 6     public static void main(String[] args) {
 7         Cat cat1=new Cat();
 8         cat1.start();
 9         //cat1.start();同一个线程,不能启动2次
10         
11         Dog dog1=new Dog();
12         Thread t=new Thread(dog1);
13         t.start();
14         //t.start();同一个线程,不能启动2次
15     }
16 }
17 
18 //猫类
19 class Cat extends Thread{
20     public void run(){
21         System.out.println("11");
22     }
23 }
24 
25 //狗类
26 class Dog implements Runnable{
27     public void run(){
28         System.out.println("2");
29     }
30 }

 

java中的线程问题(三)——继承Thread VS 实现Runnable的区别