2013-02-27 55 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線程不會被通知,因爲它們不在顯示器上等待。