为了账号安全,请及时绑定邮箱和手机立即绑定

这种结果 何解?

窗口2买了一张票还剩:3张票

窗口3买了一张票还剩:2张票

窗口3买了一张票还剩:0张票

窗口1买了一张票还剩:3张票

窗口2买了一张票还剩:1张票


正在回答

4 回答

也是对的,线程执行顺序是随机的

0 回复 有任何疑惑可以回复我~
	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 回复 有任何疑惑可以回复我~

我懂了   同时运行的   两个线程都在买票   

0 回复 有任何疑惑可以回复我~
#1

柠檬酱c

但按理讲cpu在执行任务的时候是不可能同步进行的啊,它不可能同时将一个数减一啊?不知道是我理解有问题还是说这个程序有bug
2017-08-17 回复 有任何疑惑可以回复我~

多运行几次  偶尔是这个结果:

窗口1买了一张票还剩:4张票

窗口1买了一张票还剩:3张票

窗口1买了一张票还剩:2张票

窗口1买了一张票还剩:1张票

窗口1买了一张票还剩:0张票


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

这种结果 何解?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信