Object 类的方法wait()
和方法notify()
用于线程间通信。当wait()
被调用时,用于同步的对象放弃它的锁,但是当调用通知时,锁直到同步块完成才被释放。
那么,notify()
函数有什么用呢?即使它不存在,同步块也会完成并释放锁,对吗?
问问题
395 次
3 回答
2
notify()
负责唤醒等待线程,即。将线程从等待队列转移到运行队列。也就是等待线程可以被调度器调度。
于 2013-09-05T11:57:18.507 回答
2
java.lang.Object.notify()
唤醒在此对象的监视器上等待的单个线程。如果有任何线程正在等待该对象,则选择其中一个被唤醒。该选择是任意的,并由实施自行决定。线程通过调用其中一个等待方法在对象的监视器上等待。
此方法只能由作为该对象监视器所有者的线程调用。线程通过以下三种方式之一成为对象监视器的所有者:
通过执行该对象的同步实例方法。
通过执行在对象上同步的同步语句的主体。对于 Class 类型的对象,通过执行该类的同步静态方法。
于 2013-09-05T12:22:48.943 回答
2
必须通知等待锁定对象的线程他们希望锁定的对象现在是空闲的,这就是方法notify()
和notifyAll()
方法所做的。
于 2013-09-05T11:59:30.443 回答