笙__笙
2017-11-22 14:57
为什么 要用while循环 在讲互斥时候 while(energyBoxs[from]<amount){lockObj.wait()}
synchronize(lockObj) { <------- 这个获取锁操作会增加系统开销 if(energyBoxs[from]<amount){ return; } ... }
之前的写法:每次成功获取锁之后,先条件判断,若为false,则返回,释放锁。 然后又要再次获取锁,这样操作会以很大的系统开销作为代价的。改成下面写法的话:
synchronize(lockObj) { while(energyBoxs[from]<amount){ lockObj.wait(); } }
就是为了减小系统开销
深入浅出Java多线程
186088 学习 · 464 问题
相似问题