Встречается на собеседованиях • сегодня
Что такое семафоры
Семафор — это механизм синхронизации, который контролирует доступ к общему ресурсу через счётчик. Потоки запрашивают доступ (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();
}
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы