Class ConcurrentCommonCache<K,V>
java.lang.Object
org.codehaus.groovy.runtime.memoize.ConcurrentCommonCache<K,V>
- Type Parameters:
K- type of the keysV- type of the values
- All Implemented Interfaces:
Serializable, Map<K,V>, EvictableCache<K, V>, MemoizeCache<K, V>, ValueConvertable<V, Object>
- Direct Known Subclasses:
ConcurrentSoftCache
@ThreadSafe
public class ConcurrentCommonCache<K,V>
extends Object
implements EvictableCache<K,V>, ValueConvertable<V,Object>, Serializable
Represents a simple key-value cache, which is thread safe and backed by a
Map instance- Since:
- 2.5.0
- See Also:
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from interface EvictableCache
EvictableCache.EvictionStrategyNested classes/interfaces inherited from interface MemoizeCache
MemoizeCache.ValueProvider<K,V> -
Constructor Summary
ConstructorsConstructorDescriptionConstructs a cache with unlimited sizeConcurrentCommonCache(int maxSize) Constructs a LRU cache with the default initial capacity(16)ConcurrentCommonCache(int initialCapacity, int maxSize) Constructs a LRU cache with the specified initial capacity and max size.ConcurrentCommonCache(int initialCapacity, int maxSize, EvictableCache.EvictionStrategy evictionStrategy) Constructs a cache with limited sizeConcurrentCommonCache(Map<K, V> map) Constructs a cache backed by the specifiedMapinstance -
Method Summary
Modifier and TypeMethodDescriptionvoidInvoked when some of the held SoftReferences have been evicted by the garbage collector and so should be removed from the cache.voidclear()Clear the cacheclearAll()Clear the cachebooleancontainsKey(Object key) Determines if the cache contains an entry for the specified key.booleancontainsValue(Object value) convertValue(V value) convert the original value to the target valueentrySet()Gets a value from the cachegetAndPut(K key, MemoizeCache.ValueProvider<? super K, ? extends V> valueProvider) Try to get the value from cache.getAndPut(K key, MemoizeCache.ValueProvider<? super K, ? extends V> valueProvider, boolean shouldCache) booleanisEmpty()keys()Get all keys associated to cached valueskeySet()Associates the specified value with the specified key in the cache.voidRemove the cached value by the keyintsize()Get the size of the cachevalues()Get all cached valuesMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface Map
compute, computeIfAbsent, computeIfPresent, equals, forEach, getOrDefault, hashCode, merge, putIfAbsent, remove, replace, replace, replaceAll
-
Constructor Details
-
ConcurrentCommonCache
public ConcurrentCommonCache()Constructs a cache with unlimited size -
ConcurrentCommonCache
public ConcurrentCommonCache(int initialCapacity, int maxSize, EvictableCache.EvictionStrategy evictionStrategy) Constructs a cache with limited size- Parameters:
initialCapacity- initial capacity of the cachemaxSize- max size of the cacheevictionStrategy- LRU or FIFO, seeEvictableCache.EvictionStrategy
-
ConcurrentCommonCache
public ConcurrentCommonCache(int initialCapacity, int maxSize) Constructs a LRU cache with the specified initial capacity and max size. The LRU cache is slower thanLRUCache- Parameters:
initialCapacity- initial capacity of the LRU cachemaxSize- max size of the LRU cache
-
ConcurrentCommonCache
public ConcurrentCommonCache(int maxSize) Constructs a LRU cache with the default initial capacity(16)- Parameters:
maxSize- max size of the LRU cache- See Also:
-
ConcurrentCommonCache
-
-
Method Details
-
get
-
put
Associates the specified value with the specified key in the cache. -
getAndPut
Try to get the value from cache. If not found, create the value byMemoizeCache.ValueProviderand put it into the cache, at last return the value- Specified by:
getAndPutin interfaceMemoizeCache<K,V> - Parameters:
key-- Returns:
- the cached value
-
getAndPut
public V getAndPut(K key, MemoizeCache.ValueProvider<? super K, ? extends V> valueProvider, boolean shouldCache) -
values
Get all cached values -
entrySet
-
keys
-
containsKey
Determines if the cache contains an entry for the specified key.- Specified by:
containsKeyin interfaceEvictableCache<K,V> - Specified by:
containsKeyin interfaceMap<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
- Specified by:
containsValuein interfaceMap<K,V>
-
size
-
isEmpty
-
remove
-
putAll
-
keySet
-
clearAll
-
clear
-
cleanUpNullReferences
public void cleanUpNullReferences()Invoked when some of the held SoftReferences have been evicted by the garbage collector and so should be removed from the cache. The implementation must ensure that concurrent invocations of all methods on the cache may occur from other threads and thus should protect any shared resources.- Specified by:
cleanUpNullReferencesin interfaceMemoizeCache<K,V>
-
convertValue
convert the original value to the target value- Specified by:
convertValuein interfaceValueConvertable<K,V> - Parameters:
value- the original value- Returns:
- the converted value
-