Назад к вопросам
Aston
Junior — Middle
70
Можете ли вы объяснить, что представляет собой монитор в контексте многопоточного программирования?
Компании, где спрашивали
Ответ от нейросети
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 для обеспечения потокобезопасности. Монитор гарантирует, что в каждый момент времени только один поток может выполнять синхронизированный метод этого объекта.