Junior — Middle
Могу ли два метода, објављена коришћењем кључне речи synchronized унутар једног синглтон контролера, да се покрећу истовремено?
sobes.tech АИ
Одговор од АИ
Если два метода в одном синглтон-контроллере объявлены с ключевым словом 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(), будет заблокирован до завершения первого.