синхронизируют доступ к статическому полю

в Пункте 67 Эффективного Java Josh Bloch, он упомянул, что, если метод изменяет статическое поле, необходимо синхронизировать доступ к этому полю, поскольку для клиентов не возможно выполнить внешнюю синхронизацию на таком методе. Я не вполне понимаю, каким образом клиент не может выполнить внешнюю синхронизацию на статическом методе?

внутренняя реализация синхронизации:

public class Serial {
  private static int serialNumber = 0;

  public synchronized static void incSerial() {  
      serialNumber++;
  }

}

, если никакая внутренняя синхронизация не реализовала, клиент может синхронизироваться внешне:

synchronize(Serial.class) {

  Serial.incSerial();
}

какие-либо идеи?

6
задан Jon Skeet 4 September 2011 в 20:59
поделиться