У меня три темы. Поток 1 (T1) является производителем, который генерирует данные. Каждый из потоков 2 и 3 (соответственно T2, T3) ожидает обработки данных T1 в отдельных циклах. Я думаю о том, чтобы разделить BlockingQueue между потоками и заставить T2 и T3 ждать, вызвав «take».
docs для java .util.concurrent.BlockingQueue говорят, что это может «безопасно использовать с несколькими производителями и несколькими потребителями». При тестировании примера из документации кажется, что поведение состоит в том, чтобы позволить одному потребителю «взять» объект «положить» вместо того, чтобы все они его получили. Таким образом, T2 или T3 получают данные, и кажется, что они чередуются. Я хотел бы, чтобы они оба получали одинаковые данные, когда T1 помещает некоторые данные.
Мой вопрос, является ли BlockingQueue верным путем к go? Должен ли я думать об этой проблеме по-другому?