如何将异步CompletableFuture与完成的CompletableFuture结合起来?

问题描述 投票:0回答:1

我查看了以下代码:How to combine 3 or more CompletionStages?,但在这篇文章中,只有来自CompletableFutures的Completed任务被合并。

如何将异步CompletableFuture与Completed CompletableFuture结合起来,以便将已完成的completableFuture的结果与尚未计算结果的结果相结合?

concurrency java-8 future completable-future
1个回答
0
投票

您可以使用CompletableFuture.completedFuture将任何普通数据转换为CompletableFuture对象,然后使用thenCompose中的CompletableFuture来组合Async操作的结果。示例代码:

long userId = 12345678899L;
CompletableFuture.completedFuture(userId)
.thenCompose(userId -> getUserDeatils(userId))
.thenAccept(user -> doSomething(user));
// or thenApply(user -> doSomething(user))

其中getUserDeatils(userId)可能是这样的:

CompletableFuture<User> getUserDeatils(long userId) {
  // some async code to load user details
}
© www.soinside.com 2019 - 2024. All rights reserved.