K - The key typeV - The value typepublic class ConcurrentReferenceHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V>
ConcurrentHashMap that uses soft or
weak references for both keys and
values.
This class can be used as an alternative to null Collections.synchronizedMap(new WeakHashMap<K, Reference<V>>()) in order to
support better performance when accessed concurrently. This implementation
follows the same design constraints as ConcurrentHashMap with the
exception that null values and null keys are supported.
NOTE: The use of references means that there is no guarantee that items placed into the map will be subsequently available. The garbage collector may discard references at any time, so it may appear that an unknown thread is silently removing entries.
If not explicitly specified this implementation will use soft entry references.
| 限定符和类型 | 类和说明 |
|---|---|
protected static class |
ConcurrentReferenceHashMap.Entry<K,V>
A single map entry.
|
protected static interface |
ConcurrentReferenceHashMap.Reference<K,V>
A reference to an
ConcurrentReferenceHashMap.Entry contained in the map. |
protected class |
ConcurrentReferenceHashMap.ReferenceManager
Strategy class used to manage
ConcurrentReferenceHashMap.References. |
static class |
ConcurrentReferenceHashMap.ReferenceType
Various reference types supported by this map.
|
protected static class |
ConcurrentReferenceHashMap.Restructure
The types of restructuring that can be performed.
|
protected class |
ConcurrentReferenceHashMap.Segment
A single segment used to divide the map to allow better concurrent
performance.
|
AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V>| 构造器和说明 |
|---|
ConcurrentReferenceHashMap()
Create a new
ConcurrentReferenceHashMap instance. |
ConcurrentReferenceHashMap(int initialCapacity)
Create a new
ConcurrentReferenceHashMap instance. |
ConcurrentReferenceHashMap(int initialCapacity,
float loadFactor)
Create a new
ConcurrentReferenceHashMap instance. |
ConcurrentReferenceHashMap(int initialCapacity,
float loadFactor,
int concurrencyLevel)
Create a new
ConcurrentReferenceHashMap instance. |
ConcurrentReferenceHashMap(int initialCapacity,
float loadFactor,
int concurrencyLevel,
ConcurrentReferenceHashMap.ReferenceType referenceType)
Create a new
ConcurrentReferenceHashMap instance. |
ConcurrentReferenceHashMap(int initialCapacity,
int concurrencyLevel)
Create a new
ConcurrentReferenceHashMap instance. |
| 限定符和类型 | 方法和说明 |
|---|---|
protected static int |
calculateShift(int minimumValue,
int maximumValue)
Calculate a shift value that can be used to create a power-of-two value
between the specified maximum and minimum values.
|
void |
clear() |
boolean |
containsKey(Object key) |
protected ConcurrentReferenceHashMap.ReferenceManager |
createReferenceManager()
Factory method that returns the
ConcurrentReferenceHashMap.ReferenceManager. |
Set<Map.Entry<K,V>> |
entrySet() |
V |
get(Object key) |
protected int |
getHash(Object o)
Get the hash for a given object, apply an additional hash function to
reduce collisions.
|
protected float |
getLoadFactor() |
protected ConcurrentReferenceHashMap.Reference<K,V> |
getReference(Object key,
ConcurrentReferenceHashMap.Restructure restructure)
Returns a
ConcurrentReferenceHashMap.Reference to the ConcurrentReferenceHashMap.Entry for the specified
key or null if not found. |
protected ConcurrentReferenceHashMap.Segment |
getSegment(int index) |
protected int |
getSegmentsSize() |
V |
put(K key,
V value) |
V |
putIfAbsent(K key,
V value) |
V |
remove(Object key) |
boolean |
remove(Object key,
Object value) |
V |
replace(K key,
V value) |
boolean |
replace(K key,
V oldValue,
V newValue) |
int |
size() |
clone, containsValue, equals, hashCode, isEmpty, keySet, putAll, toString, valuespublic ConcurrentReferenceHashMap()
ConcurrentReferenceHashMap instance.public ConcurrentReferenceHashMap(int initialCapacity)
ConcurrentReferenceHashMap instance.initialCapacity - the initial capacity of the mappublic ConcurrentReferenceHashMap(int initialCapacity,
float loadFactor)
ConcurrentReferenceHashMap instance.initialCapacity - the initial capacity of the maploadFactor - the load factor. When the average number of references
per table exceeds this value resize will be attemptedpublic ConcurrentReferenceHashMap(int initialCapacity,
int concurrencyLevel)
ConcurrentReferenceHashMap instance.initialCapacity - the initial capacity of the mapconcurrencyLevel - the expected number of threads that will
concurrently write to the mappublic ConcurrentReferenceHashMap(int initialCapacity,
float loadFactor,
int concurrencyLevel)
ConcurrentReferenceHashMap instance.initialCapacity - the initial capacity of the maploadFactor - the load factor. When the average number of references
per table exceeds this value resize will be attemptedconcurrencyLevel - the expected number of threads that will
concurrently write to the mappublic ConcurrentReferenceHashMap(int initialCapacity,
float loadFactor,
int concurrencyLevel,
ConcurrentReferenceHashMap.ReferenceType referenceType)
ConcurrentReferenceHashMap instance.initialCapacity - the initial capacity of the maploadFactor - the load factor. When the average number of references
per table exceeds this value resize will be attemptedconcurrencyLevel - the expected number of threads that will
concurrently write to the mapreferenceType - the reference type used for entriesprotected final float getLoadFactor()
protected final int getSegmentsSize()
protected final ConcurrentReferenceHashMap.Segment getSegment(int index)
protected ConcurrentReferenceHashMap.ReferenceManager createReferenceManager()
ConcurrentReferenceHashMap.ReferenceManager. This method
will be called once for each ConcurrentReferenceHashMap.Segment.protected int getHash(Object o)
ConcurrentHashMap. Subclasses can override to
provide alternative hashing.o - the object to hash (may be null)public boolean containsKey(Object key)
containsKey 在接口中 Map<K,V>containsKey 在类中 AbstractMap<K,V>protected final ConcurrentReferenceHashMap.Reference<K,V> getReference(Object key, ConcurrentReferenceHashMap.Restructure restructure)
ConcurrentReferenceHashMap.Reference to the ConcurrentReferenceHashMap.Entry for the specified
key or null if not found.key - the key (can be null)restructure - types of restructure allowed during this callnullpublic V putIfAbsent(K key, V value)
putIfAbsent 在接口中 ConcurrentMap<K,V>protected static int calculateShift(int minimumValue,
int maximumValue)
minimumValue - the minimum valuemaximumValue - the maximum value1 << shift to obtain a value)Copyright © 2013 The Skfiy Open Association. All Rights Reserved.