永发信息网

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

答案:1  悬赏:30  手机版
解决时间 2021-01-07 08:35
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.”
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
史密斯燃气热水器 燃气一直开着好吗
最有实力的私彩平台机械背光游戏键盘k-15怎么
金刚经 是唐代采用什么技术印刷的?
哪一家中高端童装好?推荐一下
一直显示游戏环境异常,怎么破
我是刚回国的留学生,想问一下大家现在去办理
北房五间,东三间西两间,陪房在西边,大门朝西
溢缘宾馆怎么去啊,有知道地址的么
为什么高中开设的vb,当时感觉很难学,是因为
(4.5+0.5)X=1000乘以4.5
2013款卡宴和卡宴S个多少钱?全部办下来多钱
烂尾楼是什么意思
京剧程派唱腔的发生特点是什么?
揭阳到潮汕物流中心有几公里
怎么禁止win8的拖动桌面功能
推荐资讯
在百度传课里下载视频系统默认放到哪里?
跪求:徐州中能硅业
职场包袱主要有哪些表现形式
怎样用绿色生态肉做红烧肉
墨绿色象征着什么?
两个三联双控开关控三路灯
1234年是什么朝代啊?
三星note2可以玩自由之战吗?
功德诵普贤行愿品多长诵普贤行愿品3万遍感应
依次填入下面一段文字中横线处的关联词语,恰
如何反驳懒惰是科学发展的动力?
有种外壳象玉米似的纹路的海蚌,学名叫什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?