为什么在布尔值上进行同步不是一个好的做法?
我的建筑师总是说
从不在布尔值上同步
我无法理解原因,如果有人能用一个例子解释为什么这不是一个好的做法,我将不胜感激。参考示例代码
private Boolean isOn = false;
private String statusMessage = "I'm off";
public void doSomeStuffAndToggleTheThing(){
// Do some stuff
synchronized(isOn){
if(isOn){
isOn = false;
statusMessage = "I'm off";
// Do everything else to turn the thing off
} else {
isOn = true;
statusMessage = "I'm on";
// Do everything else to turn the thing on
}
}
}