Встречается на собеседованиях • сегодня
Для чего нужен 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 потока, остальные ждут освобождения разрешения.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы