CompletableFuture使用注意
CompletableFuture
中不带xxxAsync(xxx)
的方法默认会在当前线程执行(当前线程指的是调用CompletableFuture.complete(xxx)
或者CompletableFuture.completeExceptionally(xxx)
的线程), 因此此种方式CompletableFuture
的线程执行策略为尽量不切换线程(这里的尽量并不是完全一定, 因为如果当前future已经为完成的状态那么CompletableFuture
会直接执行后续逻辑)CompletableFuture
中带xxxAsync(xxx)
的方法要求传入一个Executor
, 后续回掉逻辑将在这个Executor
中执行。 默认不传的情况下会使用ForkJoinPool
中的公共线程池。 因此应当对所有的xxxAsync(xxx)
方法调用格外注意, 一旦使用了错误的线程池可能导致隔离性的缺失, 性能不符合预期等问题。
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.
Last modified July 28, 2022: refactor main docs to v0.1.1 (#199) (8423db1)