java在哪个线程上执行在new CompletableFuture()上注册的回调?
我不熟悉Completable Futures,并试图了解在CompletableFuture上注册的回调是在哪个线程上使用构造函数(new CompletableFuture())构造的
例如:
CompletableFuture<String> future =
CompletableFuture.supplyAsync(() -> {
//...
}, pool);
CompletableFuture<Integer> intFuture =
future.thenApply(s -> s.length());
thenApply()中的转换已注册,并将在任务完成后立即在与任务相同的线程中执行
CompletableFuture<String> future = new CompletableFuture();
CompletableFuture<Integer> intFuture =
future.thenApply(s -> s.length());
future.complete("hello");
已注册thenApply()中的转换,并且在使用future.complete("hello")
完成任务后将在哪个线程上执行转换?它是在主线程上执行还是在ForkJoinPool.commonPool()
上执行
# 1 楼答案
新线程只执行
Async
方法,因此在您的情况下thenApply
由主线程执行输出