丶子非鱼
2017-05-23 09:28
窗口2买了一张票还剩:3张票
窗口3买了一张票还剩:2张票
窗口3买了一张票还剩:0张票
窗口1买了一张票还剩:3张票
窗口2买了一张票还剩:1张票
也是对的,线程执行顺序是随机的
public void run() {
// TODO Auto-generated method stub
while(true){
synchronized(lockObj){
if(ticketsNum>0){
ticketsNum--;
System.out.println(Thread.currentThread().getName()+"卖出一张票,剩余"+ticketsNum);
//Thread.yield();
lockObj.notifyAll();
}
}
}
}这样改就能按顺序输出了
我懂了 同时运行的 两个线程都在买票
多运行几次 偶尔是这个结果:
窗口1买了一张票还剩:4张票
窗口1买了一张票还剩:3张票
窗口1买了一张票还剩:2张票
窗口1买了一张票还剩:1张票
窗口1买了一张票还剩:0张票
细说多线程之Thread VS Runnable
55313 学习 · 73 问题
相似问题