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--);
       }
    }
}
//不知道为什么只有一个线程在运行呀

解决方案 »

  1.   

    public static String str=new String ("");
    这个是个类属性,你对它加的synchronized(str),
    只能有一个进程访问把。
      

  2.   

    不是吧
    每个线程操作的是同一个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次。