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