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