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