【发布时间】:2014-05-25 11:39:43
【问题描述】:
如果其他线程等待不同的条件,我们应该调用notifyAll(),这样每个其他线程都有机会获得执行。
但是我们犯了一个错误,假设所有线程都在等待相同的条件,我们调用notify(),让JVM选择一个线程,但是选择的线程不能运行,因为条件仍然不能满足,那会发生什么?
所有线程停止运行?还是JVM继续选择另一个线程唤醒,就像notifyALL()一样?
【问题讨论】:
-
but the selected thread cannot run, because the condition still cannot satisfy请详细说明? -
线程 a:while(a>0),线程 b:while(b>0),线程 c:while(c>0)...
-
notify唤醒一个在该对象上调用了wait的线程。这里没有什么可以满足的。 -
@lovespring 好吧,在这种情况下,线程很可能会再次
wait并且也许会唤醒其他线程。显示一些代码。
标签: java multithreading jvm