我正在尝试使用 Project Reactor 的 Mono.fromCallable(Callable)
执行异步操作,我注意到,在我的测试用例中,它似乎在调用线程上运行。 Mono.fromCallable(Callable)
默认使用调用线程的地方是否有记录?
我从 Reactor reference guide best practices 看到我应该做如下事情:
Mono blockingWrapper = Mono.fromCallable(() -> {
return /* make a remote synchronous call */
});
blockingWrapper = blockingWrapper.subscribeOn(Schedulers.boundedElastic());
但我没有看到任何地方默认使用
Schedulers.immediate()
。为什么不默认为 Schedulers.boundedElastic()
? 最佳答案
reactor 用户指南的 Threading and Schedulers 部分与您的问题相关(重点是我的):
.subscribeOn(...)
运算符将导致在指定的调度程序上调用上游 Callable
,而不是在其上进行 subscribe()
调用的线程。
默认情况下,传递给 Callable
的 .fromCallable
不会在另一个 Scheduler 上运行,因为所有 Callable
不一定会阻塞。因此,在很多情况下,没有理由在另一个调度器上执行 Callable
。
关于java - Mono.fromCallable 默认在调用线程上执行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58239816/