标签: java multithreading synchronization
当有多个线程处于等待状态时;如果我调用notify()而不是调用notifyAll()将在等待状态的多个线程中通知哪一个?
答案 0 :(得分:3)
这是未定义的行为。任何人都可以被接走。来自JavaDoc:
如果有任何线程在等待这个对象,则选择其中一个 惊醒。 选择是任意的,由酌情决定 实施
是的,这可以导致thread starvation。
答案 1 :(得分:1)
The javadoc说:
选择是任意的,由实施决定。
答案 2 :(得分:1)
虽然已经提到过,Java规范没有定义特定行为,但我怀疑JDC实现会将特定监视器的WAIT队列前面的线程占用。但是,这不应该依赖。