Sobes.tech
Назад к вопросам
Junior — Middle
76

Как работает механизм synchronized при использовании его с статической функцией в контексте монитора?

Компании, где спрашивали
Т-БанкТ-Банк

Ответ от нейросети

sobes.tech AI

Когда метод объявлен как synchronized static в Java, монитор (lock) берётся на уровне класса, а не на уровне экземпляра объекта. Это значит, что при вызове такого метода поток блокирует монитор класса (Class object), и никакие другие потоки не смогут одновременно выполнить другие статические synchronized методы этого же класса.

Пример:

public class Example {
    public static synchronized void staticSyncMethod() {
        // блокируется монитор класса Example.class
        // критическая секция
    }
}

Таким образом, synchronized на статическом методе обеспечивает взаимное исключение на уровне всего класса, а не конкретного объекта. Это полезно, когда нужно синхронизировать доступ к статическим ресурсам или переменным класса.