<div dir="ltr">Don't reuse CompletableFutures.<div>Most obviously because they're mutable.<br><div><br><div>See also <a href="https://bugs.openjdk.java.net/browse/JDK-8161600">https://bugs.openjdk.java.net/browse/JDK-8161600</a><br></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Jul 24, 2016 at 5:57 AM, Pavel Rappo <span dir="ltr"><<a href="mailto:pavel.rappo@gmail.com" target="_blank">pavel.rappo@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
Is it generally safe to reuse an instance of CompletableFuture? Or am I risking<br>
with memory leaks due to dependants build up?<br>
<br>
Say, I have a method that returns a CF. In some cases it may return a CF<br>
straight away indicating that the action has been already done. Should I always<br>
create a new completed CF, or can I reuse a pre-cached one?<br>
<br>
There's a comment in the class itself, but I'm not sure I understand it enough<br>
to make a conclusion:<br>
<br>
     * ...Without precautions, CompletableFutures would be prone to<br>
     * garbage accumulation as chains of Completions build up, each<br>
     * pointing back to its sources. So we null out fields as soon as<br>
     * possible.  The screening checks needed anyway harmlessly ignore<br>
     * null arguments that may have been obtained during races with<br>
     * threads nulling out fields.  We also try to unlink non-isLive<br>
     * (fired or cancelled) Completions from stacks that might<br>
     * otherwise never be popped: Method cleanStack always unlinks non<br>
     * isLive completions from the head of stack; others may<br>
     * occasionally remain if racing with other cancellations or<br>
     * removals...<br>
<br>
Thanks,<br>
-Pavel<br>
_______________________________________________<br>
Concurrency-interest mailing list<br>
<a href="mailto:Concurrency-interest@cs.oswego.edu">Concurrency-interest@cs.oswego.edu</a><br>
<a href="http://cs.oswego.edu/mailman/listinfo/concurrency-interest" rel="noreferrer" target="_blank">http://cs.oswego.edu/mailman/listinfo/concurrency-interest</a><br>
</blockquote></div><br></div>