Sobes.tech
Назад к вопросам
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(), будет заблокирован до завершения первого.