2013-02-27 54 views
0

enter image description here通知和notifyAll的影响阻塞状态的线程仅

我的理解是,当我们调用object.notify(一个线程)和object.notifyAll(所有线程),处于阻塞状态的线程被通知。

运行状态线程没有收到任何通知。

+1

建议什么? '通知'**表示**“解锁”。没有涉及实际的信息;等待线程不会收到任何通知事件的通知。 – 2013-02-27 15:38:37

+0

只要处理器能够安排它们,可运行线程就会被执行。你为什么要通知他们? – Aurand 2013-02-27 15:40:49

+0

好吧,如果你想让所有的线程集都能够正确运行,即使有些线程正在运行,也要给每个线程一个信号量来等待。当您想要表示需要从所有线程进行另一次运行时,请发出所有信号量的信号。 – 2013-02-27 15:45:11

回答

2

处于阻塞状态的线程正在被通知。

的排序。 notify唤醒处于WAITING状态的线程。

通知然后把它们放到BLOCKED状态,直到他们可以获取他们正在等待的对象监视器。在初始​​调用中已经被阻塞的对象不受影响。

RUNNABLE线程不会被通知,因为它们不在显示器上等待。