日期:2014-05-20  浏览次数:20740 次

不知道为什么
public   class   TrainTicketSell  
{
        public   static   int   ticket=100;
        public   static   void   main(String   args[])
        {
                new   Sell().start();
                new   Sell().start();
                new   Sell().start();
                new   Sell().start();
        }
}


class   Sell   extends   Thread
{
        public   static   String   str=new   String   ( " ");
        public   void   run()
        {
              synchronized(str)
              {
                          while(TrainTicketSell.ticket> 0)
                                  System.out.println(Thread.currentThread().getName()+ ": "+TrainTicketSell.ticket--);
              }
        }
}
//不知道为什么只有一个线程在运行呀


------解决方案--------------------
public static String str=new String ( " ");
这个是个类属性,你对它加的synchronized(str),
只能有一个进程访问把。
------解决方案--------------------
不是吧。。。
每个线程操作的是同一个ticket,所以看起来像只有一个线程。
class Sell extends Thread
{
Sell(){
System.out.println( "线程启动 ");
}
public static String str=new String ( " ");
public void run()
{
synchronized(str)
{

while(TrainTicketSell.ticket> 0)
System.out.println(Thread.currentThread().getName()+ ": "+TrainTicketSell.ticket--);
}
}
}
应该可以看到打印了5次。