可能重複:
Why are wait() and notify() declared in Java's Object class?Java的通知(),notifyAll的()和wait()方法
我想知道爲什麼notify()
,notifyAll()
和wait()
方法存在於Object類,而其他線程相關的方法存在於Java中的Thread類中?
可能重複:
Why are wait() and notify() declared in Java's Object class?Java的通知(),notifyAll的()和wait()方法
我想知道爲什麼notify()
,notifyAll()
和wait()
方法存在於Object類,而其他線程相關的方法存在於Java中的Thread類中?
線程可以使用對象將消息從一個線程傳輸到另一個線程,並且這些方法允許發生這種情況。一個線程調用wait()來說「我正在等待消息發送到這個對象。」另一個線程可以調用notify()來說「我正在向該對象發送消息」。因此,對象是一個通道,通過這個通道線程之間沒有明確的相互參照。如果這些方法在Thread類中,那麼兩個線程需要互相引用來進行通信。相反,所有通信線程只需要同意使用某個特定的共享資源。
[從http://www.coderanch.com/how-to/java/WaitAndNotifyInObjectClass]
由於這些方法與在物體的鎖定工作;線程使用鎖定無關緊要。由於他們操縱對象的屬性,因此它們屬於Object類。
這與同步和鎖有關。
我們可以對每個對象進行同步,並且這些方法用於與等待此對象監視器的線程進行交互。