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)
  • Method Details

    • put

      public V put​(K key, V value)
      Description copied from interface: MemoizeCache
      Associates the specified value with the specified key in the cache.
      Specified by:
      put in interface MemoizeCache<K,​V>
      Parameters:
      key - key with which the specified value is to be associated
      value - 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​(K key)
      Description copied from interface: MemoizeCache
      Gets a value from the cache
      Specified by:
      get in interface MemoizeCache<K,​V>
      Parameters:
      key - the key whose associated value is to be returned
      Returns:
      the value, or null, if it does not exist.
    • 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 -
      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 interface MemoizeCache<K,​V>