比如我要实现一个火车票的发售系统,代码如下:
lass Tickets implements Runnable //extends Thread
{
private int ticket = 10;
//private static int ticket = 10; public void run(){
while(ticket>0){
System.out.println(Thread.currentThread().getName()+"卖"+ticket--+"号票");
}
}
}public class Test
{
public static void main(String []args){
Tickets tt = new Tickets(); /* Tickets t1 = new Tickets();
Tickets t2 = new Tickets();
Tickets t3 = new Tickets();
Tickets t4 = new Tickets(); */ Thread t1 = new Thread(tt);
Thread t2 = new Thread(tt);
Thread t3 = new Thread(tt);
Thread t4 = new Thread(tt); t1.start();
t2.start();
t3.start();
t4.start();
}

}
请问一下我用static和Runnable两种方法实现资源的共享有什么区别?

解决方案 »

  1.   

    1、Runnable适合于多个相同程序代码线程去处理统一资源的情况,把虚拟的cpu(线程)同程序的代码,数据有效分离,较好体现面向对象的编程的思想
    2、Runnable可以避免由于java的单继承机制带来的局限。可以再继承其他类的同时,还能实现多线程的功能。
    3、Runnable能增加程序的健壮性。代码能够被多个线程共享。
      

  2.   

    可以把Runnable对象理解为线程的运行内容,不过和static有什么可比性呢,不同类的东西。