5

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

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

然而,在我看来,使用 Executor,生产者位在提交给 executor 之前以顺序方式完成,这不是我想要的。

有人可以澄清一下吗?

4

2 回答 2

1

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

于 2011-11-08T18:13:18.257 回答
1

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

于 2011-11-08T17:28:20.150 回答