我想触发许多一次性异步 CompletableFutures,如下所示:
for (Job job : jobs) {
CompletableFuture.supplyAsync(() -> job.process())
.whenComplete(this::doSomething);
}
理想情况下,这些 CompletableFutures 可以在之后被垃圾收集whenComplete
已完成。但是,由于我没有存储参考资料,因此提前收集它们是否存在风险?
您没有明确存储引用,但是supplyAsync
是,内部。该方法创建一个CompletableFuture
并向ForkJoinPool
(如果您使用的是公共池)有对其的引用。这CompletableFuture
由返回whenComplete
首先成为依赖者CompletableFuture
所以也被引用。
所有这些对象都将可用于垃圾回收ForkJoinPool
完成执行Supplier
, 标记第一个CompletableFuture
完成后,触发第二个CompletableFuture
,并执行BiConsumer
传递给whenComplete
.
你安全了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)