反应器提供了将执行上下文转移到不同调度程序的可能性,如下所示:
Mono.just("test")
.doOnNext(x -> System.out.println(currentThread().getName() + " " + x))
.publishOn(MY_SCHEDULER)
.doOnNext(x -> System.out.println(currentThread().getName() + " " + x))
.subscribe();
-----------------------
main test
my-scheduler-1 test
我如何切换回默认使用的主线程池/调度程序在Spring Webflux应用程序(通常它出现在"main";它的名字)?
简短的回答是:你不需要。
更长的回答:你不应该关心某个东西在哪个线程上运行。你可以观看这个演讲,它是提到的要点之一:https://www.youtube.com/watch?v=0rnMIueRKNU
如果你要在一个专用的调度程序上运行一些东西(例如运行一些阻塞任务),你可能应该选择回到并行或boundedElastic,这取决于你的下一步是否有cpu限制。