gpt4 book ai didi

java - CompletableFuture 和垃圾回收

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:00:34 24 4
gpt4 key购买 nike

我想触发许多一次性的异步 CompletableFuture,如下所示:

for (Job job : jobs) {
CompletableFuture.supplyAsync(() -> job.process())
.whenComplete(this::doSomething);
}

理想情况下,这些 CompletableFutures 可以在 whenComplete 完成后被垃圾回收。但是,由于我没有存储引用,是否存在预先收集它们的风险?

最佳答案

您没有明确存储引用,但 supplyAsync 在内部存储。该方法创建一个 CompletableFuture 并将任务提交给 ForkJoinPool(如果您使用的是公共(public)池),该任务有一个返回引用。 whenComplete 返回的 CompletableFuture 依赖于第一个 CompletableFuture,因此也被引用。

一旦 ForkJoinPool 完成 Supplier 的执行,所有这些对象都将可用于垃圾回收,将第一个 CompletableFuture 标记为完成,触发第二个 CompletableFuture,并执行传递给 whenCompleteBiConsumer

你很安全。

关于java - CompletableFuture 和垃圾回收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54714299/

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