Java线程同步中的通知

时间:2013-07-17 13:53:45

标签: java multithreading synchronization

当有多个线程处于等待状态时;如果我调用notify()而不是调用notifyAll()将在等待状态的多个线程中通知哪一个?

3 个答案:

答案 0 :(得分:3)

这是未定义的行为。任何人都可以被接走。来自JavaDoc

  

如果有任何线程在等待这个对象,则选择其中一个   惊醒。 选择是任意的,由酌情决定   实施

是的,这可以导致thread starvation

答案 1 :(得分:1)

The javadoc说:

  

选择是任意的,由实施决定。

答案 2 :(得分:1)

  

当有多个线程处于等待状态时;如果我调用notify()而不是调用notifyAll()将在等待状态的多个线程中通知哪一个?

虽然已经提到过,Java规范没有定义特定行为,但我怀疑JDC实现会将特定监视器的WAIT队列前面的线程占用。但是,这不应该依赖。