Java(7)的多线程管道



我正在构建一个摘要器,我需要一个管道实现。我使用了自己的实现,但随着工作的增长,我发现它不会削减。

java 中是否有一个成熟的框架为我提供了基础(基本上是同步逻辑)?

我需要声明一个阶段,每个阶段都有工作线程,工人处理项目并将结果返回到阶段,该阶段将其发送到下一个阶段(可能会扇出)。

我实现的全部目的是给我这个基础,但它不能正常工作(导致僵局的竞争条件)

我尝试获取 apache 库(基本上已经死了),但它没有创建舞台工作者的功能。

只需将所有阶段与阻塞队列连接起来,一切都会可靠地工作。使用有界的 ArrayBlockingQueue 来避免在生产者比使用者工作得更快时队列饱和。

大多数管道/数据流/参与者框架处理的任务非常小,以至于将单个线程分配给阶段也会产生开销,因此阶段共享一个线程池,因此工作线程数量有限。(可能)每个阶段利用多个线程的唯一框架是 FBP,但我不确定。

Apache Camel:http://camel.apache.org/按照你的描述去做,但可能对你现有的设计太过侵入。

最新更新