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

时间:2015-03-29 16:50:41

标签: java multithreading

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

1 个答案:

答案 0 :(得分:8)

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

  • Thread一直在对象的等待池
  • 中等待
  • 如果指定了超时并且时间已过,则Thread变为 runnable
  • Thread 中断并再次成为 runnable
  • Thread唤醒没有的理由,即它既没有通知也没有中断

最后一种情况称为虚假唤醒,这是唤醒时Thread应始终检查其等待条件是否为真的原因之一或不。如果没有,Thread应该拨打电话并再次转到wait()