当前位置:百问家>百科问答>java notify() 与 notifyAll() 区别 以及前者的用法 举例

java notify() 与 notifyAll() 区别 以及前者的用法 举例

2024-09-22 04:38:15 编辑:zane 浏览量:540

java notify() 与 notifyAll() 区别 以及前者的用法 举例

的有关信息介绍如下:

java notify() 与 notifyAll() 区别 以及前者的用法 举例

首先:使用wait方法和使用synchornized来分配cpu时间是有本质区别的。wait会释放锁,synchornized不释放锁。还有:(wait/notify/notifyAll)只能在取得对象锁的时候才能调用。调用notifyAll通知所有线程继续执行,只能有一个线程在执行其余的线程在等待(因为在所有线程被唤醒的时候在synchornized块中)。这时的等待和调用notifyAll前的等待是不一样的。notifyAll前:在对象上休息区内休息notifyAll后:在排队等待获得对象锁。notify和notifyAll都是把某个对象上休息区内的线程唤醒,notify只能唤醒一个,但究竟是哪一个不能确定,而notifyAll则唤醒这个对象上的休息室中所有的线程. 一般有为了安全性,我们在绝对多数时候应该使用notifiAll(),除非你明确知道只唤醒其中的一个线程.至于有些书上说“notify:唤醒同一对象监视器中调用wait的第一个线程”我认为是没有根据的因为sun公司是这样说的“The choice is arbitrary and occurs at the discretion of the implementation.”

版权声明:文章由 百问家 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.baiwenjia.com/answer/163360.html
热门文章