Package org.datanucleus.util
Class ConcurrentReferenceHashMap.HashEntry<K,V>
- java.lang.Object
-
- org.datanucleus.util.ConcurrentReferenceHashMap.HashEntry<K,V>
-
- Enclosing class:
- ConcurrentReferenceHashMap<K,V>
static final class ConcurrentReferenceHashMap.HashEntry<K,V> extends java.lang.Object
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.
-
-
Constructor Summary
Constructors Constructor Description HashEntry(K key, int hash, ConcurrentReferenceHashMap.HashEntry<K,V> next, V value, ConcurrentReferenceHashMap.ReferenceType keyType, ConcurrentReferenceHashMap.ReferenceType valueType, java.lang.ref.ReferenceQueue<java.lang.Object> refQueue)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) V
dereferenceValue(java.lang.Object value)
(package private) K
key()
(package private) static <K,V>
ConcurrentReferenceHashMap.HashEntry<K,V>[]newArray(int i)
(package private) java.lang.Object
newKeyReference(K key, ConcurrentReferenceHashMap.ReferenceType keyType, java.lang.ref.ReferenceQueue<java.lang.Object> refQueue)
(package private) java.lang.Object
newValueReference(V value, ConcurrentReferenceHashMap.ReferenceType valueType, java.lang.ref.ReferenceQueue<java.lang.Object> refQueue)
(package private) void
setValue(V value, ConcurrentReferenceHashMap.ReferenceType valueType, java.lang.ref.ReferenceQueue<java.lang.Object> refQueue)
(package private) V
value()
-
-
-
Field Detail
-
keyRef
final java.lang.Object keyRef
-
hash
final int hash
-
valueRef
volatile java.lang.Object valueRef
-
next
final ConcurrentReferenceHashMap.HashEntry<K,V> next
-
-
Constructor Detail
-
HashEntry
HashEntry(K key, int hash, ConcurrentReferenceHashMap.HashEntry<K,V> next, V value, ConcurrentReferenceHashMap.ReferenceType keyType, ConcurrentReferenceHashMap.ReferenceType valueType, java.lang.ref.ReferenceQueue<java.lang.Object> refQueue)
-
-
Method Detail
-
newKeyReference
final java.lang.Object newKeyReference(K key, ConcurrentReferenceHashMap.ReferenceType keyType, java.lang.ref.ReferenceQueue<java.lang.Object> refQueue)
-
newValueReference
final java.lang.Object newValueReference(V value, ConcurrentReferenceHashMap.ReferenceType valueType, java.lang.ref.ReferenceQueue<java.lang.Object> refQueue)
-
key
final K key()
-
value
final V value()
-
dereferenceValue
final V dereferenceValue(java.lang.Object value)
-
setValue
final void setValue(V value, ConcurrentReferenceHashMap.ReferenceType valueType, java.lang.ref.ReferenceQueue<java.lang.Object> refQueue)
-
newArray
static final <K,V> ConcurrentReferenceHashMap.HashEntry<K,V>[] newArray(int i)
-
-