这两天终于稍微有点空了 看了下java的线程 实现不同线程主要有两个方法其一是 extends Thread类 其二是implements Runnable接口
因为书上例子是不同的方法,我运用相同的方法比较了一下 更加清晰的了解到两者的区别
例如:
View Code
1 class MyThread implements Runnable{ 2 private int ticket = 5; 3 public void run() { 4 for(int i=0 ; i<100;i++){ 5 if (ticket>0) { 6 System.out.println("卖票:ticket = "+ticket--); 7 } 8 } 9 } 10 } 11 public class study1{ 12 public static void main(String[] args) { 13 MyThread a2 = new MyThread(); 14 new Thread(a2).start(); 15 new Thread(a2).start(); 16 new Thread(a2).start(); 17 18 } 19 }
这个是继承runnable接口的 运行结果
卖票:ticket=5
卖票:ticket=3
卖票:ticket=1
卖票:ticket=4
卖票:ticket=2
但是如果继承Thread的话 用相同的方法也是一样的 结果是一样的 也是卖出5张票只是顺序不一样而已
但是如果用继承implents Runnable的话 所实例化的类是没有start方法的。因此runnable只能够用一个实例化类去开启多个线程
然而extends Thread类的话 则可以开启多个类的多线程 。一个实例化类开启的多个线程可以共享资源。多个类的则不行。