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
。我刚刚更新了我的答案。看见