Class LRUCacheCheapRead<K,V>

java.lang.Object
org.glassfish.hk2.utilities.cache.LRUCache<K,V>
org.glassfish.hk2.utilities.cache.internal.LRUCacheCheapRead<K,V>
Type Parameters:
K - The key of the cache
V - The values in the cache

public class LRUCacheCheapRead<K,V> extends LRUCache<K,V>
LRU Cache implementation that relies on entries that keep last hit (get/put) timestamp in order to be able to remove least recently accessed items when running out of cache capacity. Item order is not being maintained during regular cache usage (mainly reads). This makes pruning operation expensive in exchange for making reads quite cheap in a multi-threaded environment.
  • Field Details

  • Constructor Details

    • LRUCacheCheapRead

      public LRUCacheCheapRead(int maxCacheSize)
      Create new cache with given maximum capacity.
      Parameters:
      maxCacheSize - Maximum number of items to keep.
  • Method Details

    • get

      public V get(K key)
      Description copied from class: LRUCache
      Returns the value associated with the given key. If there is no value, returns null
      Specified by:
      get in class LRUCache<K,V>
      Parameters:
      key - Must be a non-null key, appropriate for use as the key to a hash map
      Returns:
      The value associated with the key, or null if there is no such value
    • put

      public CacheEntry put(K key, V value)
      Description copied from class: LRUCache
      Adds the given key and value pair into the cache
      Specified by:
      put in class LRUCache<K,V>
      Parameters:
      key - Must be a non-null key, appropriate for use as the key to a hash map
      value - Must be a non-null value
      Returns:
      A cache entry that can be used to remove this entry from the cache. Will not return null
    • releaseCache

      public void releaseCache()
      Description copied from class: LRUCache
      Clears all entries in the cache, for use when a known event makes the cache incorrect
      Specified by:
      releaseCache in class LRUCache<K,V>
    • getMaxCacheSize

      public int getMaxCacheSize()
      Description copied from class: LRUCache
      Returns the maximum number of entries that will be stored in this cache
      Specified by:
      getMaxCacheSize in class LRUCache<K,V>
      Returns:
      The maximum number of entries that will be stored in this cache
    • releaseMatching

      public void releaseMatching(CacheKeyFilter<K> filter)
      Description copied from class: LRUCache
      This method will remove all cache entries for which this filter matches
      Specified by:
      releaseMatching in class LRUCache<K,V>
      Parameters:
      filter - Entries in the cache that match this filter will be removed from the cache. If filter is null nothing will be removed from the cache
    • removeLRUItem

      private void removeLRUItem()
      Remove least recently used item form the cache. No checks are done here. The method just tries to remove the least recently used cache item. An exception will be thrown if the cache is empty.