首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

不知道为什么解决方法

2012-01-20 
不知道为什么publicclassTrainTicketSell{publicstaticintticket100publicstaticvoidmain(Stringargs[])

不知道为什么
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次。

热点排行
Bad Request.