Hi Andrej,
On 30/10/2017 5:02 PM, Andrej Golovnin wrote:
Hi David,
On 30. Oct 2017, at 01:40, David Holmes <david.hol...@oracle.com> wrote:
Hi Roger,
On 30/10/2017 10:24 AM, Roger Riggs wrote:
Hi,
With the deprecation of Object.finalize its time to look at its uses too see if
they can be removed or mitigated.
So the nice thing about finalize was that it followed a nice/clean/simple OO
model where a subclass could override, add their own cleanup and then call
super.finalize(). With finalize() deprecated, and the new mechanism being
Cleaners, how do Cleaners support such usages?
Instead of ThreadPoolExecutor.finalize you can override
ThreadPoolExecutor.terminated.
True. Though overriding shutdown() would be the semantic equivalent of
overriding finalize(). :)
In the general case though finalize() might be invoking a final method.
Anyway I'm not sure we can actually do something to try to move away
from use of finalize() in TPE. finalize() is only deprecated - it is
still expected to work as it has always done. Existing subclasses that
override finalize() must continue to work until some point where we say
finalize() is not only deprecated but obsoleted (it no longer does
anything). So until then is there actually any point in doing anything?
Does having a Cleaner and a finalize() method make sense? Does it aid in
the transition?
Cheers,
David
Best regards
Andrej Golovnin