Package org.datanucleus.util
Class ConcurrentReferenceHashMap.HashEntry<K,V>
java.lang.Object
org.datanucleus.util.ConcurrentReferenceHashMap.HashEntry<K,V>
- Enclosing class:
ConcurrentReferenceHashMap<K,
V>
ConcurrentReferenceHashMap list entry. Note that this is never exported out as a user-visible
Map.Entry.
Because the value field is volatile, not final, it is legal wrt the Java Memory Model for an
unsynchronized reader to see null instead of initial value when read via a data race. Although a
reordering leading to this is not likely to ever actually occur, the Segment.readValueUnderLock method
is used as a backup in case a null (pre-initialized) value is ever seen in an unsynchronized access
method.
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionHashEntry
(K key, int hash, ConcurrentReferenceHashMap.HashEntry<K, V> next, V value, ConcurrentReferenceHashMap.ReferenceType keyType, ConcurrentReferenceHashMap.ReferenceType valueType, ReferenceQueue<Object> refQueue) -
Method Summary
Modifier and TypeMethodDescription(package private) final V
dereferenceValue
(Object value) (package private) final K
key()
(package private) static final <K,
V> ConcurrentReferenceHashMap.HashEntry<K, V>[] newArray
(int i) (package private) final Object
newKeyReference
(K key, ConcurrentReferenceHashMap.ReferenceType keyType, ReferenceQueue<Object> refQueue) (package private) final Object
newValueReference
(V value, ConcurrentReferenceHashMap.ReferenceType valueType, ReferenceQueue<Object> refQueue) (package private) final void
setValue
(V value, ConcurrentReferenceHashMap.ReferenceType valueType, ReferenceQueue<Object> refQueue) (package private) final V
value()
-
Field Details
-
keyRef
-
hash
final int hash -
valueRef
-
next
-
-
Constructor Details
-
HashEntry
HashEntry(K key, int hash, ConcurrentReferenceHashMap.HashEntry<K, V> next, V value, ConcurrentReferenceHashMap.ReferenceType keyType, ConcurrentReferenceHashMap.ReferenceType valueType, ReferenceQueue<Object> refQueue)
-
-
Method Details
-
newKeyReference
final Object newKeyReference(K key, ConcurrentReferenceHashMap.ReferenceType keyType, ReferenceQueue<Object> refQueue) -
newValueReference
final Object newValueReference(V value, ConcurrentReferenceHashMap.ReferenceType valueType, ReferenceQueue<Object> refQueue) -
key
-
value
-
dereferenceValue
-
setValue
final void setValue(V value, ConcurrentReferenceHashMap.ReferenceType valueType, ReferenceQueue<Object> refQueue) -
newArray
-