开眼看世界
2014-12-06 12:31
假设A、B线程的from都一样,energyBoxes[from]<amount导致A、B线程都wait()了。当满足energyBoxes[from] >= amount后某线程调用了notifyAll(),A、B线程都会继续运行,都对energyBoxes[from]进行操作,这样不是会导致数据出错么?
唤醒后还是要竞争锁的,所以访问时还是互斥的。
是我理解错了,notifyAll()后还是会逐个运行,不会一起向下运行造成数据出错。
个人估计notifyAll()在遍历wait set中的线程进行逐个唤醒时,应该还会用synchronized(this)互斥,不知是不是?
深入浅出Java多线程
186088 学习 · 464 问题
相似问题