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