в Пункте 67 Эффективного Java Josh Bloch, он упомянул, что, если метод изменяет статическое поле, необходимо синхронизировать доступ к этому полю, поскольку для клиентов не возможно выполнить внешнюю синхронизацию на таком методе. Я не вполне понимаю, каким образом клиент не может выполнить внешнюю синхронизацию на статическом методе?
внутренняя реализация синхронизации:
public class Serial {
private static int serialNumber = 0;
public synchronized static void incSerial() {
serialNumber++;
}
}
, если никакая внутренняя синхронизация не реализовала, клиент может синхронизироваться внешне:
synchronize(Serial.class) {
Serial.incSerial();
}
какие-либо идеи?