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
  • Constructor Details

    • LRUCache

      public LRUCache(int maxCacheSize)
      Creates an LRU cache with the supplied maximum size.
      Parameters:
      maxCacheSize - the maximum number of cached entries
  • Method Details

    • put

      public V put(K key, V value)
      Associates the specified value with the specified key in this cache.
      Specified by:
      put in interface MemoizeCache<K,V>
      Parameters:
      key - the key with which the value is to be associated
      value - the value to cache
      Returns:
      the previous value associated with key, or null
    • get

      public V get(K key)
      Returns the value associated with the supplied key.
      Specified by:
      get in interface MemoizeCache<K,V>
      Parameters:
      key - the key to look up
      Returns:
      the cached value, or null if none is present
    • getAndPut

      public V getAndPut(K key, MemoizeCache.ValueProvider<? super K,? extends V> valueProvider)
      Try to get the value from cache. If not found, create the value by MemoizeCache.ValueProvider and put it into the cache, at last return the value. The operation is completed atomically.
      Specified by:
      getAndPut in interface MemoizeCache<K,V>
      Parameters:
      key - the key to look up
      valueProvider - provide the value if the associated value not found
      Returns:
      the cached or newly created value
    • cleanUpNullReferences

      public void cleanUpNullReferences()
      Remove all entries holding SoftReferences to gc-evicted objects.
      Specified by:
      cleanUpNullReferences in interface MemoizeCache<K,V>