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 java.lang.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 cache
    V 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.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 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>