gpt4 book ai didi

Java 8 CompletableFuture 惰性计算控制

转载 作者:搜寻专家 更新时间:2023-10-31 19:44:13 24 4
gpt4 key购买 nike

我有一个关于 CompletableFuture 的问题及其在惰性计算中的可能用途。

对于此任务,它似乎是 RunnableFuture 的一个很好的替代品,因为它可以轻松创建任务链并完全控制每个链节。我仍然发现很难控制计算的确切时间。

如果我只是用 supplyAssync 方法或类似方法创建一个 CompletableFuture,就可以了。它耐心地等待我调用getjoin 方法来计算。但是,如果我尝试使用 whenComposehandle 或任何其他方法创建一个实际的链,评估会立即开始,这非常令人沮丧。

当然,我总是可以在链的开头放置一些阻塞任务,并在我准备好开始计算时释放 block ,但这似乎是一个有点难看的解决方案。有谁知道如何控制 CompletableFuture 实际运行的时间。

最佳答案

CompletableFuture 是一种推送设计,即结果一旦可用就会被推送到相关任务。这也意味着本身未被消耗的侧链仍会被执行,这可能会产生副作用。

您想要的是一种拉式设计,只有在使用祖先数据时才会将其拉入。这将是一个根本不同的设计,因为永远不会发生未消耗树的副作用。

当然,如果有足够的扭曲,CF 可以做你想做的事,但你应该研究 fork-join 框架,它允许你只运行你依赖的计算,而不是下推结果。

关于Java 8 CompletableFuture 惰性计算控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38420901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com