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