Почему не рекомендуется синхронизировать логические значения?

Мой архитектор всегда говорит, что

Никогда не синхронизируйте логические значения

Я не могу понять, почему, и был бы очень признателен, если бы кто-нибудь объяснил на примере, почему это не очень хорошая практика. Справочный пример кода

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
      }
   }
}

33
задан Raphael Ahrens 4 November 2015 в 16:10
поделиться