从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 }
时间: 2024-10-14 14:25:40