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

将 Futures.successAsList 替换为 Java 8 CompletableFuture?

邵诚
2023-03-14

我在寻找规范的代码,以Java 8的< code>CompletableFuture代码替换Guava的< code > futures . successfulaslist()。

我认为< code > completablefuture . allof()似乎是< code>Futures.allAsList()的替代,但我没有看到任何与< code>successfulAsList()非常相似的内容。

共有1个答案

衡建中
2023-03-14

< code > completablefuture . allof(…)实际上比< code>allAsList()更接近于< code>successfulAsList()。

实际上,allOf()只在所有给定的期货都完成后才完成,无论是有值还是有异常。然后,您可以检查每个未来,以检查它是如何完成的(例如,在下面的中,然后是accept()/然后是apply())。

allAsList()CompletableFuture 中没有近似的等效项,因为一旦任何输入期货失败,它就会失败。但是,您可以使用allOf()的组合来实现它,并使用exastally()链接每个输入未来,这将使allOf()返回的未来立即失败:

CompletableFuture<String> a = …, b = …, c = …;
CompletableFuture<Void> allWithFailFast = CompletableFuture.allOf(a, b, c);
Stream.of(a, b, c)
    .forEach(f -> f.exceptionally(e -> {
        allWithFailFast.completeExceptionally(e);
        return null;
    }));
 类似资料:
  • 问题内容: 所以我似乎无法弄清楚…我有一句话要说,我希望它成为。我已经尝试了以下所有方法,但似乎都没有效果; 我真的不明白为什么最后一个有效,因为这样可以正常工作: 我在这里想念什么吗? 编辑 我知道\是转义字符。我要在这里执行的操作是将所有内容都 转换为其他内容, 并且替换似乎没有按照我的预期进行。 我希望字符串a看起来像字符串b。但是替换并不能像我想的那样替换斜线。 问题答案: 无需为此使用r

  • 问题内容: 我正在用Python解析文件中的文本。我必须替换所有换行符(\ n), 因为此文本将生成html-content。例如,这是文件中的一些行: 现在我做: 而且我仍然看到带有换行符的文本。 问题答案: 只是踢,你也可以 用替换字符串中的所有换行符。

  • 我得到了一个导入的文本块,但格式并不总是那么完美。之后我会尝试用jquery解决这个问题。所以我开始用 替换 : null null 但替换不起作用。最终的html应该如下所示:

  • 我正在评估将我们的pdf处理从itext替换为pdfbox。我用200个单页pdf(94KB、469KB、937KB)做了一些测试,并将它们合并到我们应用程序中的一个pdf中。PDFBox版本:2.0.23。itextversion:2.1.7。以下是测试结果: 这是itext实现: 这是pdfbox实现: 我也尝试过使用pdfbox的pdfmerger。性能几乎与其他pdfbox实现相同。但对于

  • 问题内容: 我在MySQL中的运算结果中得到了价值。 有没有办法将这些值转换为值0? 问题答案: 是的,使用。 COALESCE遍历您提供的值列表,并返回第一个非空值。

  • 你好,我经常需要在代码中使用,但我知道这是一个非常繁重的操作。由于我正在努力提高性能,我想知道删除所有调用的方法是否有效。 我使用的是,但是由于这种方法对于大型数据集可能会有很大的问题,所以我想使用这个解决方案: 我所做的不是创建类型对(Int,Int)的RDD,而是创建类型对(Int,list[Int]),所以我的如下所示 你认为有没有更快的方法来达到同样的结果,使用一些其他的方法?谢谢你。