Package org.jboss.msc.service
Class UnlockedReadHashMap<K,V>
- java.lang.Object
-
- java.util.AbstractMap<K,V>
-
- org.jboss.msc.service.UnlockedReadHashMap<K,V>
-
- Type Parameters:
K
- the key typeV
- the value type
- All Implemented Interfaces:
java.util.concurrent.ConcurrentMap<K,V>
,java.util.Map<K,V>
final class UnlockedReadHashMap<K,V> extends java.util.AbstractMap<K,V> implements java.util.concurrent.ConcurrentMap<K,V>
A hash map that supports non-blocking, lockless read access.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
UnlockedReadHashMap.EntryIterator
private class
UnlockedReadHashMap.EntrySet
private static class
UnlockedReadHashMap.Item<K,V>
-
Field Summary
Fields Modifier and Type Field Description private static int
DEFAULT_INITIAL_CAPACITY
private static float
DEFAULT_LOAD_FACTOR
private java.util.Set<java.util.Map.Entry<K,V>>
entrySet
private float
loadFactor
private static int
MAXIMUM_CAPACITY
private int
size
private java.util.concurrent.atomic.AtomicReferenceArray<UnlockedReadHashMap.Item<K,V>[]>
table
private int
threshold
private java.lang.Object
writeLock
-
Constructor Summary
Constructors Constructor Description UnlockedReadHashMap()
UnlockedReadHashMap(float loadFactor)
UnlockedReadHashMap(int initialCapacity)
UnlockedReadHashMap(int initialCapacity, float loadFactor)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clear()
boolean
containsKey(java.lang.Object key)
private static <K,V>
UnlockedReadHashMap.Item<K,V>doGet(java.util.concurrent.atomic.AtomicReferenceArray<UnlockedReadHashMap.Item<K,V>[]> table, java.lang.Object key)
private static <K,V>
UnlockedReadHashMap.Item<K,V>doGet(UnlockedReadHashMap.Item<K,V>[] row, java.lang.Object key)
private static <K,V>
UnlockedReadHashMap.Item<K,V>[]doGetRow(java.util.concurrent.atomic.AtomicReferenceArray<UnlockedReadHashMap.Item<K,V>[]> table, int hc)
private static <K,V>
UnlockedReadHashMap.Item<K,V>[]doGetRow(java.util.concurrent.atomic.AtomicReferenceArray<UnlockedReadHashMap.Item<K,V>[]> table, java.lang.Object key)
private V
doPut(java.util.concurrent.atomic.AtomicReferenceArray<UnlockedReadHashMap.Item<K,V>[]> table, K key, V value, boolean ifAbsent)
java.util.Set<java.util.Map.Entry<K,V>>
entrySet()
V
get(java.lang.Object key)
private static <K,V>
intgetIndex(java.util.concurrent.atomic.AtomicReferenceArray<UnlockedReadHashMap.Item<K,V>[]> table, java.lang.Object key)
V
put(K key, V value)
V
putIfAbsent(K key, V value)
V
remove(java.lang.Object key)
boolean
remove(java.lang.Object key, java.lang.Object value)
private static <K,V>
UnlockedReadHashMap.Item<K,V>[]remove(UnlockedReadHashMap.Item<K,V>[] row, int idx)
V
replace(K key, V value)
boolean
replace(K key, V oldValue, V newValue)
private void
resize()
int
size()
-
Methods inherited from class java.util.AbstractMap
clone, containsValue, equals, hashCode, isEmpty, keySet, putAll, toString, values
-
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
-
-
-
-
Field Detail
-
DEFAULT_INITIAL_CAPACITY
private static final int DEFAULT_INITIAL_CAPACITY
- See Also:
- Constant Field Values
-
MAXIMUM_CAPACITY
private static final int MAXIMUM_CAPACITY
- See Also:
- Constant Field Values
-
DEFAULT_LOAD_FACTOR
private static final float DEFAULT_LOAD_FACTOR
- See Also:
- Constant Field Values
-
writeLock
private final java.lang.Object writeLock
-
loadFactor
private final float loadFactor
-
size
private volatile int size
-
table
private volatile java.util.concurrent.atomic.AtomicReferenceArray<UnlockedReadHashMap.Item<K,V>[]> table
-
threshold
private int threshold
-
-
Method Detail
-
resize
private void resize()
-
doGet
private static <K,V> UnlockedReadHashMap.Item<K,V> doGet(java.util.concurrent.atomic.AtomicReferenceArray<UnlockedReadHashMap.Item<K,V>[]> table, java.lang.Object key)
-
doGetRow
private static <K,V> UnlockedReadHashMap.Item<K,V>[] doGetRow(java.util.concurrent.atomic.AtomicReferenceArray<UnlockedReadHashMap.Item<K,V>[]> table, java.lang.Object key)
-
getIndex
private static <K,V> int getIndex(java.util.concurrent.atomic.AtomicReferenceArray<UnlockedReadHashMap.Item<K,V>[]> table, java.lang.Object key)
-
doGetRow
private static <K,V> UnlockedReadHashMap.Item<K,V>[] doGetRow(java.util.concurrent.atomic.AtomicReferenceArray<UnlockedReadHashMap.Item<K,V>[]> table, int hc)
-
doGet
private static <K,V> UnlockedReadHashMap.Item<K,V> doGet(UnlockedReadHashMap.Item<K,V>[] row, java.lang.Object key)
-
doPut
private V doPut(java.util.concurrent.atomic.AtomicReferenceArray<UnlockedReadHashMap.Item<K,V>[]> table, K key, V value, boolean ifAbsent)
-
remove
private static <K,V> UnlockedReadHashMap.Item<K,V>[] remove(UnlockedReadHashMap.Item<K,V>[] row, int idx)
-
size
public int size()
-
containsKey
public boolean containsKey(java.lang.Object key)
-
get
public V get(java.lang.Object key)
-
remove
public V remove(java.lang.Object key)
-
clear
public void clear()
-
remove
public boolean remove(java.lang.Object key, java.lang.Object value)
-
-