我正在尝试使用 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/

10-12 02:47
查看更多