【发布时间】:2014-08-14 15:11:05
【问题描述】:
我正在尝试使用 Java 8 Lambda/Stream API 来建模一个简单的生产者/消费者系统,就像:
Stream<Sample> samplesFlow = Stream.generate(new SampleSupplier());
samplesFlow.forEach(new SampleConsumer());
我意识到向多个消费者“扩展”非常简单:
samplesFlow
.peek(new SampleConsumer1())
.peek(new SampleConsumer2())
.forEach(new SampleConsumer3());
但是向系统添加新的生产者呢?是否有一些惯用或“优雅”的方式来从多个无限供应商生成流?喜欢:
Stream.generate(new SampleSupplier1(),new SampleSupplier2()); // made it up
每个供应商都模拟一个从远程源获取数据的网络侦听器。
提前致谢!
【问题讨论】:
-
您希望生成的流看起来像什么?您是否希望每个
Supplier被重复调用,或者只调用一次,或者一定次数,还是什么?也许你可以通过提供一个例子来澄清。 -
只是为了确保正确理解:您想从有可用项目的供应商生成流?订单或多或少定义了哪个供应商已经有新商品可用?
标签: java java-8 java-stream