为什么 要用while循环 在讲互斥时候 while(energyBoxs[from]<amount){lockObj.wait()}
synchronize(lockObj) { <------- 这个获取锁操作会增加系统开销
if(energyBoxs[from]<amount){
return;
}
...
}之前的写法:每次成功获取锁之后,先条件判断,若为false,则返回,释放锁。 然后又要再次获取锁,这样操作会以很大的系统开销作为代价的。改成下面写法的话:
synchronize(lockObj) {
while(energyBoxs[from]<amount){
lockObj.wait();
}
}就是为了减小系统开销