Встречается на собеседованиях • сегодня
Как семафор реализует ожидание потоком завершения работы других потоков
Семафор в Java (java.util.concurrent.Semaphore) управляет доступом к ресурсу через счетчик. Потоки запрашивают разрешение (acquire()), уменьшая счетчик. Если счетчик = 0, поток блокируется до освобождения ресурса другим потоком (release()).
Пример ожидания завершения потоков:
java
Semaphore semaphore = new Semaphore(0); // начальное значение 0
// В основном потоке
new Thread(() -> {
// работа потока
semaphore.release(); // сигнализируем о завершении
}).start();
semaphore.acquire(); // ждем, пока счетчик не станет > 0Отличие от CountDownLatch: семафор может освобождаться и захватываться многократно, а CountDownLatch одноразовый. Для ожидания завершения группы потоков лучше использовать CountDownLatch или CyclicBarrier.

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