class Window2 extends Thread
{
static int ticket=100;
public void run()
{
while(true)
{
synchronized (Thread.class)
{
if(ticket>0)
{
System.out.println(Thread.currentThread().getName()+"卖票,票号为"+ticket);
ticket--;
}
else
break;
}
try {
System.out.println(Thread.currentThread().getName()+"正在等待1s");//卖完票等待
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class SynchronizedTest {
public static void main(String[] args)
{
Window2 w1=new Window2();
Window2 w2=new Window2();
Window2 w3=new Window2();
w1.setName("线程1");
w2.setName("线程2");
w3.setName("线程3");
w1.start();
w2.start();
w3.start();
}
}
执行结果如下
如上图所示,线程1先卖了票,然后才到线程3卖;那么应该是线程1先等待1s啊,为什么是线程3先等待?