Multithreading 如何在Reactor中使用多个线程执行flatMap?
我尝试在Multithreading 如何在Reactor中使用多个线程执行flatMap?,multithreading,kotlin,project-reactor,Multithreading,Kotlin,Project Reactor,我尝试在通量范围上运行flatMap,然后在subscribeOn上运行,似乎所有操作都在同一个线程上运行。这正常吗 Flux.range(0, 1000000).log().flatMap{ it + 1 }.subscribeOn(Schedulers.parallel()).subscribe() 您可以按如下方式创建: Flux.range(0, 100000).parallel(2).runOn(Schedulers.parallel()).log().map{ it + 1 }.s
通量范围上运行flatMap
,然后在subscribeOn
上运行,似乎所有操作都在同一个线程上运行。这正常吗
Flux.range(0, 1000000).log().flatMap{ it + 1 }.subscribeOn(Schedulers.parallel()).subscribe()
您可以按如下方式创建:
Flux.range(0, 100000).parallel(2).runOn(Schedulers.parallel()).log().map{ it + 1 }.subscribe()
^^^^^^^^^^^ ^^^^^^use runOn ^^^^^^^^^^^
所以flatMap不会将流分解为并行处理的子流?这就是该方法的记录方式,并且认为只需订阅即可。只有在块内创建新的可观察对象(通量、单声道)时,flatmap
才会并行化。在您使用it+1
的示例中,操作符flatMap
将不会编译,您应该使用map
。我刚刚更新了我的答案。看见