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

Что именно блокируется при вызове статического метода, объявленного с использованием ключевого слова synchronized?

Компании, где спрашивали
СБЕРСБЕР

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

sobes.tech AI

При вызове статического метода, объявленного с ключевым словом synchronized, блокируется монитор (lock) объекта класса Class, соответствующего этому классу. То есть, синхронизация происходит на уровне класса, а не на уровне экземпляра. Это означает, что в один момент времени только один поток может выполнять любой из синхронизированных статических методов данного класса.

Пример:

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

Здесь монитором является объект Example.class. Если один поток вошёл в staticSyncMethod, другие потоки, пытающиеся вызвать любой другой статический synchronized метод этого класса, будут заблокированы до освобождения монитора.