Ответ
Нет, не будут.
В Java ключевое слово synchronized для статических методов блокирует монитор объекта Class, а не экземпляра. Поскольку все статические методы класса используют один и тот же объект Class, доступ к любому из них будет сериализован.
Пример:
public class SingletonController {
public static synchronized void method1() {
// Выполняется с блокировкой класса SingletonController.class
}
public static synchronized void method2() {
// Будет ждать, пока method1() не освободит блокировку
}
}
Почему это важно: Даже если экземпляр класса один (синглтон), статические методы синхронизируются на уровне класса. Это предотвращает одновременный вызов любых synchronized static методов из разных потоков, обеспечивая потокобезопасность для операций на уровне класса.