TGViewer
Java Ready | Программирование Java Ready | Программирование @java_ready · 9.25K subscribers
Post #2157 1.22K
Делаем простую очередь задач через BlockingQueue!

Когда один поток создаёт задачи, а другой их обрабатывает, не хочется вручную писать wait, notify и синхронизацию вокруг списка.

Для такого сценария в Java есть BlockingQueue. Она сама умеет ждать элементы и блокировать запись, если очередь ограничена по размеру.

Сначала создадим очередь с лимитом:
BlockingQueue<String> queue = new ArrayBlockingQueue<>(100);


Producer может добавлять задачи через put:
queue.put("send-email");
queue.put("build-report");


Если очередь заполнена, put подождёт свободное место. Это полезно, когда обработчик не успевает за входящим потоком задач.

Consumer забирает элементы через take:
String task = queue.take();
System.out.println(task);


Если очередь пустая, take будет ждать новый элемент. Поэтому не нужен бесконечный цикл с Thread.sleep и ручной проверкой size.

Часто worker запускают в отдельном потоке:
while (!Thread.currentThread().isInterrupted()) {
String task = queue.take();
handle(task);
}


Для остановки можно использовать interrupt или специальную poison pill задачу. Главное, что обмен между потоками остаётся явным и контролируемым.

BlockingQueue хорошо подходит для фоновой обработки писем, логов, webhook-событий, небольших worker-пулов и простых producer-consumer задач.

👉 Java Ready | #практика
  • 👍 10
  • ❤ 4
  • 🔥 3
More from @java_ready
  1. Oct 6, 2026Безопасная настройка retry для всей системы! В статье Java-разработчик делится опытом внед…
  2. Oct 5, 2026Почему после Stream.toList() нельзя добавить элемент? При работе со Stream часто нужно соб…
  3. Oct 5, 2026Как оплачивать зарубежные сервисы в 2026 году? Можно бегать между посредниками и бояться б…
  4. Oct 5, 2026Находим три самых популярных товара! Есть поток покупок с повторяющимися названиями. Постр…
  5. Oct 2, 2026photo post
  6. Oct 1, 2026Следим за появлением файлов в папке через WatchService! Создадим наблюдатель и зарегистрир…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →