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

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

В 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.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее