diff --git a/spring/webflux/Reactor.md b/spring/webflux/Reactor.md index a62e034..28d131d 100644 --- a/spring/webflux/Reactor.md +++ b/spring/webflux/Reactor.md @@ -626,7 +626,23 @@ reactor提供了两种方法来切换执行的上下文: `subscribeOn`影响订阅的过程,通常推荐将其放在source之后。 ##### `subscribeOn`原理 -在`FluxSubscribeOn#subscribeOrReturn`中,会通过`scheduler#createWorker`创建worker +在`FluxSubscribeOn#subscribeOrReturn`中,会通过`scheduler#createWorker`创建worker,并通过worker来对`执行source.subscribe`的方法进行调度。 + +故而,在consumer执行subscribe时,随着reactor chain从尾到头,下游subscriber都会调用上游publisher的subscribe方法。在`FluxSubscribeOn`调用上游的subscribe时,则是会通过worker在进行调度,实际调用在worker中执行。 + +subscribeOn方法使用方式如下: +```java +Scheduler s = Schedulers.newParallel("parallel-scheduler", 4); + +final Flux flux = Flux + .range(1, 2) + .map(i -> 10 + i) + .subscribeOn(s) + .map(i -> "value " + i); + +new Thread(() -> flux.subscribe(System.out::println)); +``` +