【问题标题】:Best way to implement a multiple producer/consumer pattern in Java 6在 Java 6 中实现多生产者/消费者模式的最佳方法
【发布时间】:2011-11-09 02:13:18
【问题描述】:

所以我有多个步骤 stage 1 -> stage 2 -> stage 3 -> stage4 所以在某些情况下生产者将是一个消费者,并且在每个阶段都有多个生产者/消费者来使用多个 cpu。以防某些数据包会错过步骤,即直接从阶段 1 进入阶段 4。

所以我打算为每个阶段设置一个类,与前一个阶段共享一个 BlockingQueue,但我还读到 ExecutorService 像生产者/消费者模式一样工作,所以我尝试使用最好的抽象.

但是在我看来,使用 Executor,生产者位在提交给 executor 之前就已经完成,这不是我想要的顺序。

有人可以澄清一下吗?

【问题讨论】:

  • 我认为最好将这种链接、调度和排序留给一些 SOA 工具,如 apache 服务组合,而不是实现我们的自定义。但是可以调用端点作为多个消费者。我认为手动实现这个有太多的变量和控制问题。只是一个想法。

标签: java concurrency consumer producer


【解决方案1】:

听起来每个阶段都需要java.util.concurrent.CompletionService,而不是BlockingQueue。

【讨论】:

  • 是的,我自己也得出了结论
【解决方案2】:

看看执行器和线程池。这里是官方教程:http://download.oracle.com/javase/tutorial/essential/concurrency/

【讨论】:

    猜你喜欢
    • 2016-07-01
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 2021-07-18
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多