我之前曾向this question询问Reactor 1.x:
假设我有
Collection<Map>
。我想:将每个
Map
实例同时转换为类型为Foo
的对象(每个实例完全独立于另一个实例 - 不需要按顺序/迭代地转换每个实例)。当所有转换后,我想要一个方法
onReduce(Collection<Foo> foos)
被调用 - 该参数包含所有生成的Foo
个实例。
但我们似乎无法找到Reactor 2.x的等效解决方案 - 只需单线程。
如何在Reactor 2.x中执行多线程映射/缩减?例如,如何使用基于ExecutorService的Dispatcher执行此操作?
答案 0 :(得分:2)
现在使用Reactor 2.0非常容易。你可以这样做:
List<Map<String, Object>> data = readData(); // <1>
Streams.from(data)
.flatMap(m -> Streams.just(m)
.dispatchOn(Environment.cachedDispatcher()) // <2>
.map(ignored -> Thread.currentThread().getName()))
.buffer() // <3>
.consume(s -> System.out.println("s: " + s)); // <4>
Stream
。Stream
创建一个新的Map
,并在给定的Dispatcher
上调度地图操作。