Назад к вопросам
Junior — Middle
66
Могут ли два статических метода, объявленные с модификатором synchronized, выполняться одновременно в рамках одного синглтон-контроллера?
Компании, где спрашивали
Демиус
Ответ от нейросети
sobes.tech AI
В Java, если два статических метода объявлены с модификатором synchronized, они синхронизируются на объекте класса (Class объекте), а не на экземпляре.
Поскольку синглтон — это один экземпляр класса, но статические методы не связаны с экземпляром, а с классом, то оба метода блокируют одну и ту же монитору класса.
Это значит, что два таких статических synchronized метода не могут выполняться одновременно в рамках одного класса (в том числе синглтона), так как они используют один и тот же монитор.
Пример:
public class SingletonController {
public static synchronized void methodA() {
// блокируется монитор класса SingletonController
}
public static synchronized void methodB() {
// блокируется тот же монитор класса
}
}
Вызов methodA и methodB из разных потоков будет последовательным, а не параллельным.