2013-02-24 3 views
0

У меня есть отношения, которые должны работать следующим образом; thread A публикует некоторые изменения в потоке B, который принимает это изменение и публикует его в потоке C.Compound Producer-Consumer на Java

Проблема является производителем-потребителем, и у меня нет проблем с использованием BlockingQueue для его реализации только с двумя объектами. Как я могу сделать поток B своего рода гибридным производителем и потребителем, чтобы сделать эту работу? Как и в, есть ли какая-то определенная модель для решения проблем в этом жанре?

ответ

2

Используйте две блокирующие очереди: одну между A и B; другой между B и C.

+0

+1 Да, так просто. –

+0

Итак, я должен передать два BlockingQueues в конструктор B? – aquemini

+0

@CoconutJones - Как вы его настроите, зависит от того, как структурируется ваш окружающий код. Он может быть настроен внешним кодом и передан конструкторам для B (и C) или настроен B в его конструкторе или C. Единственным требованием является то, что вторая очередь настроена таким образом, что B и C могут оба получить к нему доступ. Не видя своего кода, трудно сделать какие-либо рекомендации. –