当前位置:  开发笔记 > 编程语言 > 正文

为什么CompletableFuture.allOf声明为CompletableFuture <Void>?

如何解决《为什么CompletableFuture.allOf声明为CompletableFuture<Void>?》经验,为你挑选了1个好方法。

为什么CompletableFuture.allOf声明为CompletableFuture和不返回结果集合或其他东西?我认为CompletableFuture.anyOf返回是个好主意CompletableFuture,但我看到这两种方法相互关联,所以我对它们返回的内容感到困惑.



1> Misha..:

anyOf必须以某种方式告诉你具体CompletableFuture完成触发的结果是什么anyOf.如果allOf因为你知道哪些期货已经完成 - 那就完全没有必要了.

allOf(同样anyOf)并不要求所有期货都具有相同的类型.因此,如果要回归收藏的未来,它必须是一个集合,Object可能不是你想要的.

如果你真的想要allOf回归集合的未来,那么编写自己的集合非常简单:

public static CompletableFuture> myAllOf(CompletableFuture... futures) {
     return CompletableFuture.allOf(futures)
            .thenApply(x -> Arrays.stream(futures)
                    .map(f -> (Object) f.join())
                    .collect(toList())
            );
}

如果您有此问题的类型安全版本并且需要将某种类型的期货集合转换为该类型的集合的未来,请参阅此问题以获取几个示例:List to Future sequence

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有