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

Что такое 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 (по умолчанию)** — возможен "захват" разрешения без очереди.  

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

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

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

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