Package org.jboss.marshalling.reflect
Class UnlockedHashMap<K,V>
- java.lang.Object
-
- java.util.AbstractMap<K,V>
-
- org.jboss.marshalling.reflect.UnlockedHashMap<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 UnlockedHashMap<K,V> extends java.util.AbstractMap<K,V> implements java.util.concurrent.ConcurrentMap<K,V>Lock-free concurrent hash map.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) classUnlockedHashMap.BranchIterator(package private) classUnlockedHashMap.EntryIterator(package private) classUnlockedHashMap.EntrySet(package private) static classUnlockedHashMap.Item<K,V>(package private) classUnlockedHashMap.KeyIterator(package private) classUnlockedHashMap.KeySet(package private) classUnlockedHashMap.RowIterator(package private) static classUnlockedHashMap.Table<K,V>(package private) classUnlockedHashMap.TableIterator(package private) classUnlockedHashMap.ValueIterator(package private) classUnlockedHashMap.Values
-
Field Summary
Fields Modifier and Type Field Description private static intDEFAULT_INITIAL_CAPACITYprivate static floatDEFAULT_LOAD_FACTORprivate java.util.Set<java.util.Map.Entry<K,V>>entrySetprivate intinitialCapacityprivate java.util.Set<K>keySetprivate floatloadFactorprivate static intMAXIMUM_CAPACITYprivate static java.lang.ObjectNONEXISTENTA non-existent table entry (as opposed to anullvalue).private static UnlockedHashMap.Item<?,?>[]RESIZEDA row which has been resized into the new view.private static java.util.concurrent.atomic.AtomicIntegerFieldUpdater<UnlockedHashMap.Table>sizeUpdaterprivate UnlockedHashMap.Table<K,V>tableprivate static java.util.concurrent.atomic.AtomicReferenceFieldUpdater<UnlockedHashMap,UnlockedHashMap.Table>tableUpdaterprivate java.util.Collection<V>valuesprivate static java.util.concurrent.atomic.AtomicReferenceFieldUpdater<UnlockedHashMap.Item,java.lang.Object>valueUpdater
-
Constructor Summary
Constructors Constructor Description UnlockedHashMap()Construct a new instance.UnlockedHashMap(float loadFactor)Construct a new instance.UnlockedHashMap(int initialCapacity)Construct a new instance.UnlockedHashMap(int initialCapacity, float loadFactor)Construct a new instance.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private UnlockedHashMap.Item<K,V>[]addItem(UnlockedHashMap.Item<K,V>[] row, UnlockedHashMap.Item<K,V> newItem)voidclear()booleancontainsKey(java.lang.Object key)private static <K,V>
UnlockedHashMap.Item<K,V>[]createRow(int length)private static <K,V>
UnlockedHashMap.Item<K,V>[]createRow(UnlockedHashMap.Item<K,V> newItem)private UnlockedHashMap.TableIteratorcreateRowIterator(UnlockedHashMap.Table<K,V> table, int rowIdx)private VdoGet(UnlockedHashMap.Table<K,V> table, K key)private VdoPut(K key, V value, boolean ifAbsent, UnlockedHashMap.Table<K,V> table)private VdoRemove(K key, UnlockedHashMap.Table<K,V> table)private booleandoRemove(K key, V value, UnlockedHashMap.Table<K,V> table)private booleandoRemove(UnlockedHashMap.Item<K,V> item, UnlockedHashMap.Table<K,V> table)private VdoReplace(K key, V value, UnlockedHashMap.Table<K,V> table)private booleandoReplace(K key, V oldValue, V newValue, UnlockedHashMap.Table<K,V> table)java.util.Set<java.util.Map.Entry<K,V>>entrySet()Vget(java.lang.Object key)private static inthashCode(java.lang.Object key)java.util.Set<K>keySet()private static <V> Vnonexistent()Vput(K key, V value)VputIfAbsent(K key, V value)Vremove(java.lang.Object objectKey)booleanremove(java.lang.Object objectKey, java.lang.Object objectValue)private static <K,V>
UnlockedHashMap.Item<K,V>[]remove(UnlockedHashMap.Item<K,V>[] row, int idx)Vreplace(K key, V value)booleanreplace(K key, V oldValue, V newValue)private voidresize(UnlockedHashMap.Table<K,V> origTable)private static <K,V>
UnlockedHashMap.Item<K,V>[]resized()intsize()java.util.Collection<V>values()-
Methods inherited from class java.util.AbstractMap
clone, containsValue, equals, hashCode, isEmpty, putAll, toString
-
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
-
RESIZED
private static final UnlockedHashMap.Item<?,?>[] RESIZED
A row which has been resized into the new view.
-
NONEXISTENT
private static final java.lang.Object NONEXISTENT
A non-existent table entry (as opposed to anullvalue).
-
table
private volatile UnlockedHashMap.Table<K,V> table
-
keySet
private final java.util.Set<K> keySet
-
values
private final java.util.Collection<V> values
-
loadFactor
private final float loadFactor
-
initialCapacity
private final int initialCapacity
-
sizeUpdater
private static final java.util.concurrent.atomic.AtomicIntegerFieldUpdater<UnlockedHashMap.Table> sizeUpdater
-
tableUpdater
private static final java.util.concurrent.atomic.AtomicReferenceFieldUpdater<UnlockedHashMap,UnlockedHashMap.Table> tableUpdater
-
valueUpdater
private static final java.util.concurrent.atomic.AtomicReferenceFieldUpdater<UnlockedHashMap.Item,java.lang.Object> valueUpdater
-
-
Constructor Detail
-
UnlockedHashMap
public UnlockedHashMap(int initialCapacity, float loadFactor)Construct a new instance.- Parameters:
initialCapacity- the initial capacityloadFactor- the load factor
-
UnlockedHashMap
public UnlockedHashMap(float loadFactor)
Construct a new instance.- Parameters:
loadFactor- the load factor
-
UnlockedHashMap
public UnlockedHashMap(int initialCapacity)
Construct a new instance.- Parameters:
initialCapacity- the initial capacity
-
UnlockedHashMap
public UnlockedHashMap()
Construct a new instance.
-
-
Method Detail
-
addItem
private UnlockedHashMap.Item<K,V>[] addItem(UnlockedHashMap.Item<K,V>[] row, UnlockedHashMap.Item<K,V> newItem)
-
createRow
private static <K,V> UnlockedHashMap.Item<K,V>[] createRow(UnlockedHashMap.Item<K,V> newItem)
-
createRow
private static <K,V> UnlockedHashMap.Item<K,V>[] createRow(int length)
-
hashCode
private static int hashCode(java.lang.Object key)
-
resize
private void resize(UnlockedHashMap.Table<K,V> origTable)
-
remove
private static <K,V> UnlockedHashMap.Item<K,V>[] remove(UnlockedHashMap.Item<K,V>[] row, int idx)
-
remove
public boolean remove(java.lang.Object objectKey, java.lang.Object objectValue)
-
doRemove
private boolean doRemove(UnlockedHashMap.Item<K,V> item, UnlockedHashMap.Table<K,V> table)
-
doRemove
private boolean doRemove(K key, V value, UnlockedHashMap.Table<K,V> table)
-
remove
public V remove(java.lang.Object objectKey)
-
doRemove
private V doRemove(K key, UnlockedHashMap.Table<K,V> table)
-
nonexistent
private static <V> V nonexistent()
-
resized
private static <K,V> UnlockedHashMap.Item<K,V>[] resized()
-
doReplace
private boolean doReplace(K key, V oldValue, V newValue, UnlockedHashMap.Table<K,V> table)
-
size
public int size()
-
doGet
private V doGet(UnlockedHashMap.Table<K,V> table, K key)
-
containsKey
public boolean containsKey(java.lang.Object key)
-
get
public V get(java.lang.Object key)
-
clear
public void clear()
-
values
public java.util.Collection<V> values()
-
keySet
public java.util.Set<K> keySet()
-
createRowIterator
private UnlockedHashMap.TableIterator createRowIterator(UnlockedHashMap.Table<K,V> table, int rowIdx)
-
-