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

Posted lvzhengmao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的区别的主要内容,如果未能解决你的问题,请参考以下文章

常见的java话题

多线程 Thread VS Runnable

Java中的线程

Java 线程--继承java.lang.Thread类实现线程

Thread class vs Runnnable interface(转)

创建线程的7种方法&单线程 VS 多线程