On 02/14/2018 07:58 AM, Peter Levart wrote:
It may be that the intent was to refrain from using the shared 'lock'
lock for the 2nd and subsequent calls to runFinalizer() and only use
the more fine-grained 'this' lock in this case?
If someone was able to call runFinalizer() on the same instance in a
loop he could prevent or slow-down normal processing of other
Finalizer(s) if the shared 'lock' was always employed. What do you think?
I checked all uses of runFinalizer() and I don't think it can be called
more than twice for the same Finalizer instance (for example if there is
a race between runAllFinalizers() and processing of Finalizers taken
from the ReferenceQueue). So your patch is a nice simplification.