2013-05-06 50 views
1

按照javadoc notify喚醒正在等待此對象的監視器上的單個線程。如果任何線程正在等待這個對象,則選擇其中一個線程來喚醒。這種選擇是任意的,並且由實施決定。線程通過調用其中一個等待方法來等待對象的監視器。通知方法如何工作

我想知道如何通知實現此行爲。在我閱讀的許多網站上發送了一個信號,但信號在這裏意味着什麼?

通知是否直接向第一個等待線程發送信號,或者它向線程調度器發送信號?

回答

7

它不會將它發送到第一個線程,而是任何等待線程(但只有一個線程)。

你應該閱讀the javadoc more carefully.

信號也可能是一個不好的名字吧,「通知」是更好的。該機制的實際實現對Java程序員來說是透明的,並且技術實現不應該是你需要知道的......除非你對Java內部感興趣,然後我建議你檢查OpenJDK源代碼。

+0

對不起我的錯誤我混淆了javadoc和其他網站的信息。我在編輯這個問題。 – 2013-05-06 17:23:26

+1

同樣,你應該仔細閱讀Javadoc。沒有提到'信號',它清楚地表明:'如果有任何線程在等待這個對象,其中一個被選中喚醒。這個選擇是任意的,並且由執行決定。# – rolfl 2013-05-06 17:27:18

+0

感謝您澄清我的疑問。 – 2013-05-06 17:41:30