可能重复:
Why are wait() and notify() declared in Java's Object class?
我想知道为什么notify()
,notifyAll()
和wait()
方法存在于Object类中,而其他线程相关的方法存在于Java的Thread类中?
答案 0 :(得分:1)
线程可以使用对象将消息从一个线程传输到另一个线程,这些方法允许这种情况发生。线程调用wait()来表示“我正在等待将消息发送到此对象”。另一个线程可以调用notify()来说“我正在向该对象发送消息”。因此,对象是一个管道,线程通过该管道进行通信而无需明确地相互引用。如果方法在Thread类中,那么两个线程需要相互引用才能进行通信。相反,所有通信线程只需要同意使用某些特定的共享资源。
[来自http://www.coderanch.com/how-to/java/WaitAndNotifyInObjectClass]
答案 1 :(得分:0)
因为这些方法适用于Object上的锁;什么线程使用锁并不重要。因为它们操纵Object的属性,所以它们属于Object类。
答案 2 :(得分:0)
这与同步和锁定有关。
我们可以在每个对象上进行同步,并且这些方法用于与在此对象监视器上等待的线程进行交互。