Модель исполнения Reactor
состоит в том, что большинство операторов не изменяют поток для вас (кроме случаев, когда требуется время). Библиотека предлагает два оператора, которые позволяют переключаться на потоки, publishOn
(самый распространенный) и subscribeOn
.
Например, Flux.fromIterable(data).publishOn(Schedulers.newSingle("example")).subscribe(...)
будет подходить сюда.
Обратите внимание, что модель WebFlux заключается в том, что она запускает обработку цепочки в потоках Netty
, в этих nio
потоках, которые вы видите. Таким образом, очень важно, чтобы вы не блокировали эти потоки (это могло бы полностью предотвратить обработку дальнейших входящих запросов).
Schedulers
предлагает фабричные методы для различных разновидностей Scheduler
, что является абстракцией Reactor (более или менее поверх ExecutorService
).