如果没有调用notify(),等待线程会发生什么?
如果没有调用notify(),等待线程会发生什么? 这是虚假的唤醒吗?
如果通过在所述线程正在等待的对象上调用notify()
或notifyAll()
来notify()
等待的 Thread
,则可能发生以下任何一种情况:
-
Thread
在对象的等待池中等待 - 如果指定了超时并且时间过去,则
Thread
变为可运行 -
Thread
被中断并再次变为可运行 -
Thread
完全没有理由醒来,即既没有通知也没有中断
最后一种情况称为虚假唤醒,并且是唤醒Thread
时应始终检查其等待条件是否为真的原因之一。 如果没有, Thread
应该调用并再次进入wait()
。