【每日一题】Java 多线程中notify和notifyall的区别是?

Posted by 石福鹏 on 2020-10-14
Estimated Reading Time 1 Minutes
Words 315 In Total
Viewed Times

notify

notify唤醒在此对象监视器上等待的单个线程。

如果所有线程都在此对象上等待,则会选择唤醒其中一个线程。选择是任意性的,并在对实现做出决定时发生。线程通过调用其中一个 wait 方法,在对象的监视器上等待。 直到当前线程放弃此对象上的锁定,才能继续执行被唤醒的线程。被唤醒的线程将以常规方式与在该对象上主动同步的其他所有线程进行竞争;

例如,唤醒的线程在作为锁定此对象的下一个线程方面没有可靠的特权或劣势。

notifyall

notifyall唤醒在此对象监视器上等待的所有线程。

线程通过调用其中一个 wait 方法,在对象的监视器上等待。 直到当前线程放弃此对象上的锁定,才能继续执行被唤醒的线程。被唤醒的线程将以常规方式与在该对象上主动同步的其他所有线程进行竞争;

例如,唤醒的线程在作为锁定此对象的下一个线程方面没有可靠的特权或劣势。


如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !