Object类的方法wait()
和notify()
用于线程间通信。当调用wait()
时,用于同步的对象放弃其锁定,但是当调用notify时,在同步块完成之前不会释放锁定。
那么,有什么用notify()
功能?即使它不存在,同步块也会完成并释放锁定权限吗?
答案 0 :(得分:2)
notify()
负责唤醒等待的线程,即。从等待队列中获取线程以运行队列。也就是说,调度程序可以安排等待线程。
答案 1 :(得分:2)
必须通知等待对象锁定的线程,他们希望锁定的对象现在是免费的,这是notify()
和notifyAll()
方法的作用。
答案 2 :(得分:2)
java.lang.Object.notify()
唤醒正在此对象监视器上等待的单个线程。如果任何线程正在等待此对象,则选择其中一个线程被唤醒。选择是任意的,由实施决定。线程通过调用其中一个等待方法等待对象的监视器。
此方法只能由作为此对象监视器所有者的线程调用。线程以三种方式之一成为对象监视器的所有者:
通过执行该对象的同步实例方法。
通过执行同步的同步语句的主体 在对象上。
对于Class类型的对象,通过执行同步静态方法 该课程。