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

等待一个完全未来的所有结果,并根据这些价值采取行动?[副本]

颜河
2023-03-14
    var f1 = CompletableFuture.supplyAsync(() -> Service.findPlayers(filter, maxCount, LeaderboardType.Unranked));
    var f2 = CompletableFuture.supplyAsync(() -> Service.findPlayers(filter, maxCount, LeaderboardType._1x1_RM));
    var f3 = CompletableFuture.supplyAsync(() -> Service.findPlayers(filter, maxCount, LeaderboardType.TG_RM));

    var x = CompletableFuture.allOf(f1, f2, f3);

谢谢!

共有1个答案

蒋无尘
2023-03-14

您可以像现在一样执行CompletableFuture::Allof,但也可以执行Joinit:

CompletableFuture.allOf(f1, f2, f3).join();

然后你做了:

Stream.of(f1, f2, f3)
      .map(CompletableFuture::join)
      .....

没有加入到上面的操作,虽然,因为功能已经完成。

编辑

如果不想阻止:

 var f1 = ...
 var f2 = ...
 var f3 = ...

 CompletableFuture.allOf(f1, f2, f3)
                  .thenAccept(x -> {
                       f1.join();
                       f2.join();
                       f3.join();
                   })
 类似资料:
  • 是否有一种方法可以尝试等待一段时间,然后返回不同的结果,而不取消超时后的未来? 我有一个服务(我们称之为),它跑出去做自己的事情。它返回一个结果: 我愿意[阻止并]等待它一小段时间(比方说2秒)。如果它没有完成,我希望返回一个不同的结果,但我希望服务继续做它自己的事情。然后查询服务是否完成(例如,通过websockets或其他方式)将是客户端的工作。 即。我们有以下几个案例: 花费%1 s并完成其

  • 我要做的是异步计算树结构的深度,我将有树的第一层,我想启动一个异步线程来分别计算每个节点的深度。 在计算过程中,树中显然可能有一个分叉,在这一点上,我想踢一个额外的线程来计算那个分支。 我已经得到了这个工作,但我需要做一些整理逻辑,当所有这些未来完成。但我对这一过程中产生的额外的可完成的未来感到困扰。 我会用什么方法来保存所有开始的CompletableFutures+那些动态创建的,并且在执行任

  • 我有一个应用程序,通过点击按钮(该数字被定义)用户创建任务(可调用)做一些计算。我希望任务完成时能够做出反应。使用Future.get()阻止应用程序。有什么方法可以在Callable返回结果时做出反应吗?

  • 我有一个相当普遍或独特的要求。例如,我有以下列表:

  • 问题内容: 我有一个调用一些不检查线程中断的代码。调用之后,该方法将立即抛出(如预期的那样)。但是,由于后台任务的代码从不检查其线程是否被中断,因此它很乐意继续执行。 是否有等待后台任务 实际 完成的标准方法?我希望显示“正在取消…”消息或某种类似的内容,直到任务终止为止。(我确信如果有必要,我总是可以在worker类中使用一个标志来完成此操作,只需寻找其他解决方案即可。) 问题答案: 我玩了一点

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