gpt4 book ai didi

java - Mono.fromCallable 默认在调用线程上执行?

转载 作者:行者123 更新时间:2023-12-02 09:27:25 27 4
gpt4 key购买 nike

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

最佳答案

Threading and Schedulers react 堆用户指南的部分与您的问题相关(强调我的问题):

Obtaining a Flux or a Mono does not necessarily mean that it runs in a dedicated Thread. Instead, most operators continue working in the Thread on which the previous operator executed. Unless specified, the topmost operator (the source) itself runs on the Thread in which the subscribe() call was made.

.subscribeOn(...) 运算符将导致在指定的 Scheduler 上调用上游 Callable,而不是在 订阅的线程上调用() 已进行调用。

默认情况下,传递给 .fromCallableCallable 不会在另一个 Scheduler 上运行,因为所有 Callable 不一定都会阻塞。因此,在很多情况下,没有理由在另一个调度程序上执行Callable

关于java - Mono.fromCallable 默认在调用线程上执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58239816/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com