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

时间:2023-03-09 02:14:15
java中的线程问题(三)——继承Thread VS 实现Runnable的区别

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

    用实现Runnable接口的特点

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

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

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

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

 /**
* 功能:使用线程的注意事项
* 不论继承Thread或实现Rnunable接口都不能使用start启同一个线程2次
*/
public class Thread04 {
public static void main(String[] args) {
Cat cat1=new Cat();
cat1.start();
//cat1.start();同一个线程,不能启动2次 Dog dog1=new Dog();
Thread t=new Thread(dog1);
t.start();
//t.start();同一个线程,不能启动2次
}
} //猫类
class Cat extends Thread{
public void run(){
System.out.println("11");
}
} //狗类
class Dog implements Runnable{
public void run(){
System.out.println("2");
}
}