Мой архитектор всегда говорит, что
Никогда не синхронизироваться с логическим
Я не могу понять причину, почему и действительно буду признателен, если кто-нибудь сможет объяснить пример, почему это не очень хорошая практика. Справочный пример кода
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
}
}
}