Встречается на собеседованиях • сегодня

Что такое семафоры

Семафор — это механизм синхронизации, который контролирует доступ к общему ресурсу через счётчик. Потоки запрашивают доступ (acquire()), уменьшая счётчик, и освобождают (release()), увеличивая его. Если счётчик равен нулю, поток блокируется до освобождения ресурса.

Виды семафоров:

  • Двоичный (Mutex) — счётчик 0 или 1 (взаимное исключение).
  • Счётчиковый — ограничивает количество потоков.

Пример (Java):

java
Semaphore semaphore = new Semaphore(3); // Макс 3 потока

Runnable task = () -> {
    try {
        semaphore.acquire();
        System.out.println("Поток " + Thread.currentThread().getId() + " получил доступ");
        Thread.sleep(2000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    } finally {
        semaphore.release();
    }
};

// Запуск 5 потоков
for (int i = 0; i < 5; i++) {
    new Thread(task).start();
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы