RFR 9: 8138696 : java.lang.ref.Cleaner - an easy to use alternative to finalization

Kim Barrett kim.barrett at oracle.com
Tue Dec 8 18:25:00 UTC 2015


On Dec 8, 2015, at 3:09 AM, David Holmes <david.holmes at oracle.com> wrote:
> 
> Question: what happens if an object is registered simultaneously with multiple Cleaners? Do we need to warn the user against that?

Aside: I like David's suggested "action" terminology.

> Question: what happens if an object is registered simultaneously with
> multiple Cleaners? Do we need to warn the user against that?

Registering an object with multiple Cleaners, or even the same Cleaner
multiple times, is not a problem, so long as the various cleanup
actions can cope with that.  This is even expected to occur in
practice.  Consider the conversion of a class hierarchy away from
using finalize() to instead using Cleaners.  A base class may register
a cleanup action for the state associated with that (base) class.  A
derived class may independently register a cleanup action for the
additional state associated with that derived class.  The derived
class's cleanup action might be registered with the same or a
different Cleaner than that used by the base class.




More information about the core-libs-dev mailing list