Java notify(),notifyAll()和wait()方法

可能重复:
为什么在Java的Object类中声明了wait()和notify()?

我想知道为什么在Object类中存在notify()notifyAll()wait()方法,而Java中的Thread类中存在其他与线程相关的方法?

线程可以使用对象将消息从一个线程传输到另一个线程,这些方法允许这种情况发生。 线程调用wait()来表示“我正在等待将消息发送到此对象”。 另一个线程可以调用notify()来说“我正在向该对象发送消息”。 因此,对象是一个管道,线程通过该管道进行通信而无需相互明确地引用。 如果方法在Thread类中,则两个线程需要相互引用才能进行通信。 相反,所有通信线程只需要同意使用某些特定的共享资源。

[来自http://www.coderanch.com/how-to/java/WaitAndNotifyInObjectClass]

因为这些方法适用于Object上的锁; 什么线程使用锁并不重要。 因为它们操纵Object的属性,所以它们属于Object类。

这与同步和锁定有关。

我们可以在每个对象上进行同步,并且这些方法用于与在此对象监视器上等待的线程进行交互。