当前位置: 首页 > 知识库问答 >
问题:

结合两个具有不同回报类型的完全未来的结果

吴高峰
2023-03-14

我有两个不同的CompletableFuture,我喜欢并行运行(每个都有不同的返回类型),然后结合它们的结果:

 CompletableFuture<Person> person = personDB.asyncCall(..);
 CompletableFuture<Dog> dog = dogDB.asyncCall(...);

现在我喜欢把dog.name

return dog.getName() + person.getName()

我想用

  CompletableFuture<Void> combinedFuture = CompletableFuture.allOf(perons, dog);
  combinedFuture.thenApply(aVoid -> {
             // now what?
        });

但我在这里很烂。

共有1个答案

仲孙鸣
2023-03-14

使用get()方法等待它们完成。

CompletableFuture<Void> combinedFuture = CompletableFuture.allOf(perons, dog);
combinedFuture.get(); // wait for all of them to complete
return dog.getName() + person.getName();

看https://www.baeldung.com/java-completablefuture

请注意,CompletableFuture.allOf()的返回类型是CompletableFuture。此方法的局限性在于,它不返回所有Futures的组合结果。相反,您必须手动从Futures获取结果。幸运的是,CompletableFuture.join()方法和Java8 Streams API使其变得简单:

 类似资料:
  • 但是,testCase2不处理异常并引发错误。我是不是漏掉了什么?抱歉,我是新手。

  • 我正在为给定的主键查询Dynamo DB。主键由两个UUID字段(fieldUUID1、fieldUUID2)组成。对于上面的主键组合和值列表,我有很多查询要执行。为此,我使用异步CompletableFuture和ExecutorService,线程池大小为4。 在所有查询返回结果之后,这是

  • 我有一个Scala future,它调用一个api并返回future,如果结果不正确,那么另一个api调用将与第一个future的结果一起提交并作为future返回。 这是我目前为止所拥有的。 但是如果我访问fut2结果,它会给出这样的结果: 有没有一种方法,我可以选择返回fot2,如果fot1的结果是不准确的? 编辑:第二个未来必须使用第一个未来来继续API调用。这就是我到目前为止所拥有的。

  • 我有以下Java问题 我有以下通用类,它们可能被描绘为: 其中

  • 我使用的是SpringBoot和SpringDataJPA,我有一个逻辑,它由3个数据库请求组成,我想并行运行。我想在将来用于此目的。 最后,我需要从5 db查询运行的结果中构建响应对象。 所以我创造了完全未来 那我打算用。与这个未来无关。但我对循环调用有问题。如何重写它以在每个请求中使用callable,我需要从请求中传递值,然后按键排序到map中?

  • 问题内容: 看这个: 现在,我有了一些值和一个从文件中加载的值的实例化。我希望将两个结构合并到一起,以便同时获取两个结构的内容。应该覆盖设置的任何内容,而 可能没有设置所有的字段 。(为什么?因为潜在的用户可能不知道默认值,所以删除该条目等同于设置默认值-我认为) 我认为我需要对此进行反思: 在这里我不确定: 如果根本需要反思 可能有更简单的方法可以做到这一点 我在这里看到的另一个问题是检查零值可