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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将异步CompletableFuture与完成的CompletableFuture结合起来?相关的知识,希望对你有一定的参考价值。

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

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

答案

您可以使用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
}

以上是关于如何将异步CompletableFuture与完成的CompletableFuture结合起来?的主要内容,如果未能解决你的问题,请参考以下文章

13_CompletableFuture异步回调

CompletableFuture异步编排(计算完成回调代码示例)

CompletableFuture异步编排(计算完成回调代码示例)

今天来认识一个异步编程类CompletableFuture

Java8新的异步编程方式 CompletableFuture

CompletableFuture 异步编排