【发布时间】:2021-06-02 06:40:59
【问题描述】:
我正在向分布式系统的 n 个节点并行写入相同的数据。
当这些节点中的 n% 已成功写入时,其余对其他节点的写入并不重要,因为 n% 保证了其他节点之间的复制。
Java 的 CompletableFuture 似乎与我想要的非常接近,例如:
CompletableFuture.anyOf()
(在第一个 future 完成时返回)- 避免不必要的等待,但在我需要 n% 完成时返回太快
CompletableFuture.allOf()
(在所有期货完成时返回)- 避免过早返回但不必要地等待 100% 完成
我正在寻找一种在特定百分比的期货完成后返回的方法。 例如,如果我提供 10 个期货,当其中 6% 或 60% 成功完成时返回。
例如,Bluebird JS 具有此功能
Promise.some(promises, countThatNeedToComplete)
我想知道是否可以在 java 中使用 TheadExecutor 或 vanilla CompletableFuture 做类似的事情
【问题讨论】:
-
您可以只查看这些方法的源代码,了解其工作原理,然后构建您自己的逻辑以满足您的需求。
-
看here,第 2690 和 2784 行。
-
谢谢,我编写自己的实现没有问题,但认为这一定是一个常见问题,可以通过 vanilla api 或库解决,如果不是这样,我就写我的自己的实现
-
你看过
CountDownLatch吗?
标签: java parallel-processing future percentage completable-future