Class UnlimitedConcurrentCache<K,V>
- java.lang.Object
-
- org.codehaus.groovy.runtime.memoize.UnlimitedConcurrentCache<K,V>
-
- All Implemented Interfaces:
java.io.Serializable
,java.util.Map<K,V>
,EvictableCache<K,V>
,MemoizeCache<K,V>
@ThreadSafe public final class UnlimitedConcurrentCache<K,V> extends java.lang.Object implements EvictableCache<K,V>, java.io.Serializable
A cache backed by a ConcurrentHashMap- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.codehaus.groovy.runtime.memoize.EvictableCache
EvictableCache.EvictionStrategy
-
Nested classes/interfaces inherited from interface java.util.Map
java.util.Map.Entry<K extends java.lang.Object,V extends java.lang.Object>
-
Nested classes/interfaces inherited from interface org.codehaus.groovy.runtime.memoize.MemoizeCache
MemoizeCache.ValueProvider<K,V>
-
-
Constructor Summary
Constructors Constructor Description UnlimitedConcurrentCache()
Constructs a cache with unlimited sizeUnlimitedConcurrentCache(int initialCapacity)
Constructs a cache with unlimited size and set its initial capacityUnlimitedConcurrentCache(java.util.Map<? extends K,? extends V> m)
Constructs a cache and initialize the cache with the specified map
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
cleanUpNullReferences()
Replying on the ConcurrentHashMap thread-safe iteration implementation the method will remove all entries holding SoftReferences to gc-evicted objects.void
clear()
Clear the cachejava.util.Map<K,V>
clearAll()
Clear the cacheboolean
containsKey(java.lang.Object key)
Determines if the cache contains an entry for the specified key.boolean
containsValue(java.lang.Object value)
java.util.Set<java.util.Map.Entry<K,V>>
entrySet()
V
get(java.lang.Object key)
Gets a value from the cacheV
getAndPut(K key, MemoizeCache.ValueProvider<? super K,? extends V> valueProvider)
The implementation of `getAndPut` is not atomicboolean
isEmpty()
java.util.Set<K>
keys()
Get all keys associated to cached valuesjava.util.Set<K>
keySet()
V
put(K key, V value)
Associates the specified value with the specified key in the cache.void
putAll(java.util.Map<? extends K,? extends V> m)
V
remove(java.lang.Object key)
Remove the cached value by the keyint
size()
Get the size of the cachejava.util.Collection<V>
values()
Get all cached values
-
-
-
Constructor Detail
-
UnlimitedConcurrentCache
public UnlimitedConcurrentCache()
Constructs a cache with unlimited size
-
UnlimitedConcurrentCache
public UnlimitedConcurrentCache(int initialCapacity)
Constructs a cache with unlimited size and set its initial capacity- Parameters:
initialCapacity
- the initial capacity
-
-
Method Detail
-
remove
public V remove(java.lang.Object key)
Remove the cached value by the key
-
clearAll
public java.util.Map<K,V> clearAll()
Clear the cache- Specified by:
clearAll
in interfaceEvictableCache<K,V>
- Returns:
- returns the content of the cleared map
-
clear
public void clear()
Clear the cache- Specified by:
clear
in interfacejava.util.Map<K,V>
- See Also:
clearAll()
-
values
public java.util.Collection<V> values()
Get all cached values
-
keys
public java.util.Set<K> keys()
Get all keys associated to cached values- Specified by:
keys
in interfaceEvictableCache<K,V>
- Returns:
- all keys
-
containsKey
public boolean containsKey(java.lang.Object key)
Determines if the cache contains an entry for the specified key.- Specified by:
containsKey
in interfaceEvictableCache<K,V>
- Specified by:
containsKey
in interfacejava.util.Map<K,V>
- Parameters:
key
- key whose presence in this cache is to be tested.- Returns:
- true if the cache contains a mapping for the specified key
-
containsValue
public boolean containsValue(java.lang.Object value)
-
size
public int size()
Get the size of the cache
-
put
public V put(K key, V value)
Associates the specified value with the specified key in the cache.- Specified by:
put
in interfacejava.util.Map<K,V>
- Specified by:
put
in interfaceMemoizeCache<K,V>
- Parameters:
key
- key with which the specified value is to be associatedvalue
- value to be associated with the specified key- Returns:
- null, or the old value if the key associated with the specified key.
-
get
public V get(java.lang.Object key)
Gets a value from the cache
-
getAndPut
public V getAndPut(K key, MemoizeCache.ValueProvider<? super K,? extends V> valueProvider)
The implementation of `getAndPut` is not atomic- Specified by:
getAndPut
in interfaceMemoizeCache<K,V>
- Returns:
- the cached value
-
cleanUpNullReferences
public void cleanUpNullReferences()
Replying on the ConcurrentHashMap thread-safe iteration implementation the method will remove all entries holding SoftReferences to gc-evicted objects.- Specified by:
cleanUpNullReferences
in interfaceMemoizeCache<K,V>
-
-