class TicketsSystem
{
public static void main(String[] args) throws Exception
{
TicketsThread tt=new TicketsThread();
new Thread(tt).start();

new Thread(tt).start();

new Thread(tt).start();

new Thread(tt).start();
}
}
class TicketsThread implements Runnable
{
int tickets=100;
public void run()
{ synchronized(this){
while(true)
{
try{
Thread.sleep(500);
} catch(InterruptedException e) {
}
if(tickets>0)
{
System.out.println(Thread.currentThread().getName()+"  seil tickets: "+tickets);
tickets--;
}
if(tickets==5)
{
break;

}
}
}
}

解决方案 »

  1.   

    除了第一个线程退出,接下来的线程死循环了。
    因为第一个线程在tickets==5退出后,下一个线程继续tickets--,tickets再也不会变成5了。
      

  2.   

    JAVA外企软件工程师班视频课程下载www.java2800.cn 同学们请登陆 www.java2800.cn 指定的地址下载,视频课程可以用来自学,预习,复习。请同学们相互转告一起分享。