所以基本上我正在学习更严肃的并发性(研究事情是如何工作的,而不仅仅是在需要时使用随机的东西).
当我向他询问这个问题时,我的专业人员告诉我,他和他的同事们无法重现虚假的醒来,并认为该行是一条未被删除的旧行(就像,它就在那里,java得到了"更好的",它不再需要,线路仍在那里",而事实并非如此.
链接:
http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/Condition.html
它位于以下点之下:
实施注意事项
在他看来,这种情况看起来像这样:
lock.lock() if (p>q) { lock.newCondition().await }
完全没问题,因为他说虚假唤醒不会发生,所以不需要循环:
lock.lock() while (p>q) { lock.newCondition().await }
我更有可能把事情和理解文件和我的老师的方式混合在一起,但是我确实花了一些时间试图理解为什么每件事,并且不能带有我自己的"答案",我要么相信一个或另一个(不重要,它是纯粹的我想要学习).
我的老师确实花时间告诉我们如何解释Java中的并发性是非常愚蠢的,但我也没有选择它,所以就是这样.