如果没有调用notify(),等待线程会发生什么?

如果没有调用notify(),等待线程会发生什么? 这是虚假的唤醒吗?

如果通过在所述线程正在等待的对象上调用notify()notifyAll()notify() 等待的 Thread ,则可能发生以下任何一种情况:

  • Thread在对象的等待池中等待
  • 如果指定了超时并且时间过去,则Thread变为可运行
  • Thread中断并再次变为可运行
  • Thread 完全没有理由醒来,即既没有通知也没有中断

最后一种情况称为虚假唤醒,并且是唤醒Thread时应始终检查其等待条件是否为真的原因之一。 如果没有, Thread应该调用并再次进入wait()