Class ConcurrentLRUCache<K,V>

java.lang.Object
org.apache.myfaces.util.lang.ConcurrentLRUCache<K,V>

public class ConcurrentLRUCache<K,V> extends Object
A LRU cache implementation based upon ConcurrentHashMap and other techniques to reduce contention and synchronization overhead to utilize multiple CPU cores more effectively.

Note that the implementation does not follow a true LRU (least-recently-used) eviction strategy. Instead it strives to remove least recently used items but when the initial cleanup does not remove enough items to reach the 'acceptableWaterMark' limit, it can remove more items forcefully regardless of access order.

See org.apache.solr.util.ConcurrentLRUCache
Since:
solr 1.4
  • Constructor Details

    • ConcurrentLRUCache

      public ConcurrentLRUCache(int upperWaterMark, int lowerWaterMark, int acceptableWatermark, int initialSize, boolean runCleanupThread, boolean runNewThreadForCleanup, ConcurrentLRUCache.EvictionListener<K,V> evictionListener)
    • ConcurrentLRUCache

      public ConcurrentLRUCache(int size, int lowerWatermark)
  • Method Details

    • setAlive

      public void setAlive(boolean live)
    • get

      public V get(K key)
    • remove

      public V remove(K key)
    • put

      public V put(K key, V val)
    • getOldestAccessedItems

      public Map<K,V> getOldestAccessedItems(int n)
      Returns 'n' number of oldest accessed entries present in this cache. This uses a TreeSet to collect the 'n' oldest items ordered by ascending last access time and returns a LinkedHashMap containing 'n' or less than 'n' entries.
      Parameters:
      n - the number of oldest items needed
      Returns:
      a LinkedHashMap containing 'n' or less than 'n' entries
    • getLatestAccessedItems

      public Map<K,V> getLatestAccessedItems(int n)
    • size

      public int size()
    • clear

      public void clear()
    • getMap

      public Map<Object,org.apache.myfaces.util.lang.ConcurrentLRUCache.CacheEntry<K,V>> getMap()
    • destroy

      public void destroy()
    • getStats

      public ConcurrentLRUCache.Stats getStats()
    • finalize

      protected void finalize() throws Throwable
      Overrides:
      finalize in class Object
      Throws:
      Throwable