2011-11-08 46 views
5

所以我有多个步骤阶段1 - >阶段2 - >阶段3 - >阶段4,因此在某些情况下,生产者将成为消费者,并且在每个阶段是多个生产者/消费者利用多个cpus。在相关的情况下,有些数据包会错过步骤,即直接从第1阶段到第4阶段。在Java中实现多生产者/消费者模式的最佳方式6

所以我要为每个舞台有一个班级,与前一个舞台共享一个BlockingQueue,但我也读过ExecutorService像一个生产者/消费者模式一样工作,所以我试图去与最好的抽象。

但是在我看来,使用Executor,生产者位是在它们被提交给执行程序之前完成的,而且是以我想要的顺序方式执行的。

请问谁能澄清?

+0

我认为最好把这个链接和调度和排序放到像apache服务组合这样的SOA工具上,而不是实现我们的定制。但是可以调用终点作为多个消费者。我认为手动实现它有太多的变量和控制问题。只是一个想法。 – r0ast3d

回答

1

听起来像你需要java.util.concurrent.CompletionService为每个阶段,而不是BlockingQueue

+0

是的,我自己来得到我的结论 –