为了账号安全,请及时绑定邮箱和手机立即绑定

用notifyAll()的话,不是会造成数据出错么?

5482850d0001d00905000213.jpg


假设A、B线程的from都一样,energyBoxes[from]<amount导致A、B线程都wait()了。当满足energyBoxes[from] >= amount后某线程调用了notifyAll(),A、B线程都会继续运行,都对energyBoxes[from]进行操作,这样不是会导致数据出错么?

正在回答

2 回答

唤醒后还是要竞争锁的,所以访问时还是互斥的。

0 回复 有任何疑惑可以回复我~

是我理解错了,notifyAll()后还是会逐个运行,不会一起向下运行造成数据出错。

个人估计notifyAll()在遍历wait set中的线程进行逐个唤醒时,应该还会用synchronized(this)互斥,不知是不是?

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

用notifyAll()的话,不是会造成数据出错么?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信