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

Можете объяснить понятие монитора в Java и его роль в синхронизации потоков?

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

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

sobes.tech AI

В Java монитор — это механизм синхронизации, который обеспечивает взаимное исключение (mutex) при доступе к разделяемым ресурсам между потоками. Каждый объект в Java имеет связанный с ним монитор.

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

Это гарантирует, что только один поток одновременно выполняет критическую секцию кода, предотвращая состояния гонки и обеспечивая корректность данных.

Пример:

public class Counter {
    private int count = 0;

    public synchronized void increment() {
        count++;
    }

    public synchronized int getCount() {
        return count;
    }
}

Здесь методы increment и getCount синхронизированы, то есть используют монитор объекта Counter для защиты доступа к переменной count.