`Reference::isEnqueued` method was never implemented as it was initially 
specified since 1.2. The specification says that it tests if this reference 
object has been enqueued, but the long-standing behavior is to test if this 
reference object is in its associated queue, only reflecting the state at the 
time when this method is executed. The implementation doesn't do what the 
specification promised, which might cause serious bugs if unnoticed. For 
example, an application that relies on this method to release critical 
resources could cause serious performance issues, in particular when this 
method is misused on Reference objects without an associated queue.  
`Reference::refersTo(null)` is the better recommended way to test if a 
Reference object has been cleared.

This proposes to deprecate `Reference::isEnqueued`.  Also the spec is updated 
to match the long-standing behavior.

CSR: https://bugs.openjdk.java.net/browse/JDK-8189386

-------------

Commit messages:
 - add suppress warnings
 - 8052260: Reference.isEnqueued() spec does not match the long-standing 
behavior returning true iff it's in the ref queue

Changes: https://git.openjdk.java.net/jdk/pull/1684/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=1684&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8052260
  Stats: 28 lines in 2 files changed: 22 ins; 0 del; 6 mod
  Patch: https://git.openjdk.java.net/jdk/pull/1684.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/1684/head:pull/1684

PR: https://git.openjdk.java.net/jdk/pull/1684

Reply via email to