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

Можете ли вы объяснить, что представляет собой монитор в контексте многопоточного программирования?

Компании, где спрашивали
AstonAston

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

sobes.tech AI

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

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

Пример:

public class Counter {
    private int count = 0;

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

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

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