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

来源:4-4 Java线程交互之深入剖析互斥与同步

Juneava

2016-10-31 22:48

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回答

  • silencecorner
    2016-11-01 17:38:52
    已采纳

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

    silenc...

    不谢^_^

    2016-11-03 23:19:20

    共 2 条回复 >

深入浅出Java多线程

带你一起深入浅出多线程,掌握基础,展望进阶路线

186088 学习 · 464 问题

查看课程

相似问题