Встречается на собеседованиях • сегодня
Что такое Semaphore
Semaphore — это механизм синхронизации, который ограничивает доступ к ресурсу. Он поддерживает счетчик, указывающий количество доступных разрешений. Потоки запрашивают разрешение через acquire() и освобождают через release().
Пример с ограничением доступа к общему ресурсу (макс. 3 потока одновременно):
java
Semaphore semaphore = new Semaphore(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();
}
text
**Виды Semaphore:**
- **Fair (честный)** — разрешения выдаются в порядке очереди.
- **Non-fair (по умолчанию)** — возможен "захват" разрешения без очереди.
Используется для пулов ресурсов, ограничения параллелизма и управления доступом.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы