我正在构建一个汇总器,我需要一个流水线实现。我已经使用了我自己的实现,但随着工作的增长,我发现它就是不能减少。
在java中有没有一个成熟的框架可以为我提供基础(基本上是同步逻辑)?
我需要声明一个阶段,每个阶段都有工人,工人处理项目并将结果返回给阶段,阶段将其发送到下一个阶段(可能会散开)。
我的实现的全部要点是为我提供这个基础,但是它不能正常工作(竞争条件会导致死锁)
我尝试过获取apache库(它基本上已经死了),但它没有创建stage workers的功能。
发布于 2013-10-07 02:22:05
只需将所有的阶段与阻塞队列连接起来,一切都将可靠地工作。如果生产者的工作速度比消费者快,则使用有界ArrayBlockingQueue来避免队列饱和。
大多数管道/数据流/参与者框架处理的任务非常小,以至于将单个线程分配给阶段都是一种开销,因此阶段共享一个线程池,因此工作线程的数量也是有限的。唯一一个(可能)在每个阶段使用多个线程的框架是FBP,但我不确定。
发布于 2014-09-17 21:54:29
Apache Camel:http://camel.apache.org/实现了您所描述的功能,但是可能会对您现有的设计造成太大的干扰。
https://stackoverflow.com/questions/19211903
复制相似问题