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 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--);
}
}
}
//不知道为什么只有一个线程在运行呀
这个是个类属性,你对它加的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次。