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

Для чего нужен Semaphore

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

Основные сценарии:

  • Ограничение доступа к ресурсу (например, подключения к БД).
  • Реализация пула ресурсов.
  • Координация работы потоков (например, producer-consumer).

Пример:

java
Semaphore semaphore = new Semaphore(3); // Макс 3 потока одновременно

Runnable task = () -> {
    try {
        semaphore.acquire(); // Захватываем разрешение
        System.out.println(Thread.currentThread().getName() + " работает");
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    } finally {
        semaphore.release(); // Освобождаем разрешение
    }
};

for (int i = 0; i < 10; i++) {
    new Thread(task).start();
}

В этом примере одновременно могут выполняться только 3 потока, остальные ждут освобождения разрешения.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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