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

ami*_*eek 6 java multithreading

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

Rav*_*yal 8

如果等待 Thread没有通知通过调用notify()notifyAll()在对象上说,线程正在等待,那么下面的任何一个可能会发生:

  • Thread一直等待在对象的等待池
  • 如果指定了超时并且时间过去,则Thread变为可运行
  • Thread打断,并成为可运行再次
  • Thread用于唤醒没有道理可言即它既不通知,也没有中断

最后一种情况被称为虚假唤醒,并且是唤醒Thread时应始终检查其等待条件是否为真的原因之一.如果没有,Thread应该打电话再去wait().