Какое отличие между семафором и монитором в контексте механизмов синхронизации потоков?

Семафор и монитор — это механизмы синхронизации потоков, но они отличаются по принципу работы и уровню абстракции.

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

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

Семафор и монитор — это механизмы синхронизации потоков, но они отличаются по принципу работы и уровню абстракции.

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

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

Семафор и монитор — это механизмы синхронизации потоков, но они отличаются по принципу работы и уровню абстракции.

  • Семафор — это низкоуровневый примитив, который управляет счетчиком разрешений. Поток пытается захватить разрешение (операция acquire), если разрешения закончились, поток блокируется. После завершения работы поток освобождает разрешение (release). Семафоры могут быть как бинарными (значение 0 или 1), так и с произвольным числом разрешений.
  • Монитор — это более высокий уровень абстракции, обычно реализуемый как объект с встроенной блокировкой и условными переменными. В Java монитором является любой объект, на котором можно синхронизироваться с помощью ключевого слова synchronized. Монитор обеспечивает взаимное исключение и возможность ожидания и уведомления потоков через методы wait(), notify(), notifyAll().

Ключевые отличия:

  • Семафор управляет числом разрешений, монитор — обеспечивает эксклюзивный доступ к ресурсу.
  • Монитор встроен в объектно-ориентированную модель Java, семафор — отдельный класс из java.util.concurrent.
  • Монитор поддерживает ожидание и уведомление потоков, семафор — только счетчик разрешений.

Пример использования монитора в Java:

synchronized (sharedObject) {
    while (!condition) {
        sharedObject.wait();
    }
    // критическая секция
    sharedObject.notifyAll();
}

Пример семафора:

Semaphore semaphore = new Semaphore(3); // 3 разрешения
semaphore.acquire(); // захватить разрешение
// работа с ресурсом
semaphore.release(); // освободить разрешение

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

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

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

Подробнее