/
spirzen
/
it-code-examples
Обзор
Документация
Войти
/
spirzen
/
it-code-examples
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
examples/java/java-503-23-026/main.java
28 строк
942 B
Spirzen
Code migration pack
09 июн 2026, 01:41
09 июн 2026, 01:41
cebc284
Код
Авторство
О чём код?
public class EventQueue { private final List<String> events = new ArrayList<>(); private volatile boolean shutdown = false; public void addEvent(String event) { synchronized (events) { if (shutdown) throw new IllegalStateException("Очередь закрыта"); events.add(event); events.notifyAll(); // happens-before пробуждение ожидающих потоков } } public String waitForEvent() throws InterruptedException { synchronized (events) { while (events.isEmpty() && !shutdown) { events.wait(); // освобождает монитор, блокируется } return events.isEmpty() ? null : events.remove(0); } } public void shutdown() { synchronized (events) { shutdown = true; events.notifyAll(); } } }