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

时间:2012-03-21 10:36:21

标签: java

  

可能重复:
  Why are wait() and notify() declared in Java's Object class?

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

3 个答案:

答案 0 :(得分:1)

  

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

这与同步和锁定有关。

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