On 2/14/18 1:58 AM, Peter Levart wrote:

I take back this claim. Of course the the following race is possible:

- Thread1: calls runAllFinalizers and takes a Finalizer from 'unprocessed' list. - Thread2: takee the same Finalizer instance from ReferenceQueue and calls runFinalizer() - Thread1: calls runFinalizer() with the same instance for the 2nd time now.

runAllFinalizers is invoked during shutdown when System.runFinalizersOnExit has been called.

I have been wanting to remove System::runFinalizersOnExit [1] which is the culprit of causing this complicated handling.   Probably time to remove it in 11?

Mandy

[1] http://mail.openjdk.java.net/pipermail/core-libs-dev/2015-January/031041.html

Reply via email to