Class LRUCache<K,V>
java.lang.Object
org.codehaus.groovy.runtime.memoize.LRUCache<K,V>
- All Implemented Interfaces:
MemoizeCache<K,V>
@ThreadSafe public final class LRUCache<K,V> extends Object implements MemoizeCache<K,V>
A cache backed by a ConcurrentLinkedHashMap
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.codehaus.groovy.runtime.memoize.MemoizeCache
MemoizeCache.ValueProvider<K,V>
-
Constructor Summary
Constructors Constructor Description LRUCache(int maxCacheSize)
-
Method Summary
Modifier and Type Method Description void
cleanUpNullReferences()
Remove all entries holding SoftReferences to gc-evicted objects.V
get(K key)
Gets a value from the cacheV
getAndPut(K key, MemoizeCache.ValueProvider<? super K,? extends V> valueProvider)
Try to get the value from cache.V
put(K key, V value)
Associates the specified value with the specified key in the cache.
-
Constructor Details
-
LRUCache
public LRUCache(int maxCacheSize)
-
-
Method Details
-
put
Description copied from interface:MemoizeCache
Associates the specified value with the specified key in the cache.- 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
Description copied from interface:MemoizeCache
Gets a value from the cache- Specified by:
get
in interfaceMemoizeCache<K,V>
- Parameters:
key
- the key whose associated value is to be returned- Returns:
- the value, or null, if it does not exist.
-
getAndPut
Try to get the value from cache. If not found, create the value byMemoizeCache.ValueProvider
and put it into the cache, at last return the value. The operation is completed atomically.- Specified by:
getAndPut
in interfaceMemoizeCache<K,V>
- Parameters:
key
-valueProvider
- provide the value if the associated value not found- Returns:
- the cached value
-
cleanUpNullReferences
public void cleanUpNullReferences()Remove all entries holding SoftReferences to gc-evicted objects.- Specified by:
cleanUpNullReferences
in interfaceMemoizeCache<K,V>
-