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

哪位大神再给我解读一下这段程序,谢谢

try {
					//条件不满足, 将当前线程放入Wait Set
					lockObj.wait();
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			 }
			 
			 
			 System.out.print(Thread.currentThread().getName());
			 energyBoxes[from] -= amount;
			 System.out.printf("从%d转移%10.2f单位能量到%d", from, amount, to);
			 energyBoxes[to] += amount;
			 System.out.printf(" 能量总和:%10.2f%n", getTotalEnergies());
			//唤醒所有在lockObj对象上等待的线程
			 lockObj.notifyAll();


正在回答

1 回答

条件不满足时也就是其它线程还没有将数据写回(这里的lockObj是EnergySystem的final成员,用来标记EnergySystem,lockObj.wait()也就相当于EnergySystem实例.wait()),等待写入之后(也就是满足条件),执行逻辑代码,在唤醒其它线程(有可能还没有写入数据的)。可以回头看争用条件那节,有助于理解,我专门截了图。http://img1.sycdn.imooc.com//581862970001cc3719180977.jpg

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

Juneava 提问者

非常感谢!
2016-11-01 回复 有任何疑惑可以回复我~
#2

silencecorner

不谢^_^
2016-11-03 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

哪位大神再给我解读一下这段程序,谢谢

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