可能重复:
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类。
这与同步和锁有关。
我们可以对每个对象进行同步,并且这些方法用于与等待此对象监视器的线程进行交互。