|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.opensymphony.xwork2.inject.util.ReferenceMap<K,V>
public class ReferenceMap<K,V>
Concurrent hash map that wraps keys and/or values in soft or weak references. Does not support null keys or values. Uses identity equality for weak and soft keys.
The concurrent semantics of ConcurrentHashMap
combined with the
fact that the garbage collector can asynchronously reclaim and clean up
after keys and values at any time can lead to some racy semantics. For
example, size()
returns an upper bound on the size, i.e. the actual
size may be smaller in cases where the key or value has been reclaimed but
the map entry has not been cleaned up yet.
Another example: If get(Object)
cannot find an existing entry
for a key, it will try to create one. This operation is not atomic. One
thread could put(Object, Object)
a value between the time another
thread running get()
checks for an entry and decides to create one.
In this case, the newly created value will replace the put value in the
map. Also, two threads running get()
concurrently can potentially
create duplicate values for a given key.
In other words, this class is great for caching but not atomicity.
Nested Class Summary | |
---|---|
protected static interface |
ReferenceMap.Strategy
|
Constructor Summary | |
---|---|
ReferenceMap(ReferenceType keyReferenceType,
ReferenceType valueReferenceType)
Concurrent hash map that wraps keys and/or values based on specified reference types. |
Method Summary | |
---|---|
void |
clear()
|
boolean |
containsKey(Object key)
|
boolean |
containsValue(Object value)
|
Set<Map.Entry<K,V>> |
entrySet()
Returns an unmodifiable set view of the entries in this map. |
V |
get(Object key)
|
protected com.opensymphony.xwork2.inject.util.ReferenceMap.PutStrategy |
getPutStrategy()
|
boolean |
isEmpty()
|
Set<K> |
keySet()
Returns an unmodifiable set view of the keys in this map. |
V |
put(K key,
V value)
|
void |
putAll(Map<? extends K,? extends V> t)
|
V |
putIfAbsent(K key,
V value)
|
protected ReferenceMap.Strategy |
putIfAbsentStrategy()
|
protected ReferenceMap.Strategy |
putStrategy()
|
V |
remove(Object key)
|
boolean |
remove(Object key,
Object value)
|
V |
replace(K key,
V value)
|
boolean |
replace(K key,
V oldValue,
V newValue)
|
protected ReferenceMap.Strategy |
replaceStrategy()
|
int |
size()
|
Collection<V> |
values()
Returns an unmodifiable set view of the values in this map. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface java.util.Map |
---|
equals, hashCode |
Constructor Detail |
---|
public ReferenceMap(ReferenceType keyReferenceType, ReferenceType valueReferenceType)
keyReferenceType
- key reference typevalueReferenceType
- value reference typeMethod Detail |
---|
public V get(Object key)
get
in interface Map<K,V>
public V put(K key, V value)
put
in interface Map<K,V>
public V remove(Object key)
remove
in interface Map<K,V>
public int size()
size
in interface Map<K,V>
public boolean isEmpty()
isEmpty
in interface Map<K,V>
public boolean containsKey(Object key)
containsKey
in interface Map<K,V>
public boolean containsValue(Object value)
containsValue
in interface Map<K,V>
public void putAll(Map<? extends K,? extends V> t)
putAll
in interface Map<K,V>
public void clear()
clear
in interface Map<K,V>
public Set<K> keySet()
keySet
in interface Map<K,V>
public Collection<V> values()
values
in interface Map<K,V>
public V putIfAbsent(K key, V value)
public boolean remove(Object key, Object value)
public boolean replace(K key, V oldValue, V newValue)
public V replace(K key, V value)
public Set<Map.Entry<K,V>> entrySet()
entrySet
in interface Map<K,V>
protected ReferenceMap.Strategy putStrategy()
protected ReferenceMap.Strategy putIfAbsentStrategy()
protected ReferenceMap.Strategy replaceStrategy()
protected com.opensymphony.xwork2.inject.util.ReferenceMap.PutStrategy getPutStrategy()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |