Class Cache<K,V>

java.lang.Object
org.glassfish.hk2.utilities.cache.Cache<K,V>
Type Parameters:
K - The type of the key of the cache
V - The type of the values in the cache
All Implemented Interfaces:
Computable<K,V>

public class Cache<K,V> extends Object implements Computable<K,V>
Cache implementation that relies on FutureTask. Desired value will only be computed once and computed value stored in the cache. The implementation is based on an example from the "Java Concurrency in Practice" book authored by Brian Goetz and company.
  • Field Details

  • Constructor Details

    • Cache

      public Cache(Computable<K,V> computable)
      Create new cache with given computable to compute values. Detected cycles will be ignored as there is a no-op cycle handler registered by default.
      Parameters:
      computable -
    • Cache

      public Cache(Computable<K,V> computable, Cache.CycleHandler<K> cycleHandler)
      Create new cache with given computable and cycle handler.
      Parameters:
      computable -
      cycleHandler -
  • Method Details

    • compute

      public V compute(K key)
      Description copied from interface: Computable
      Defines an expensive computation to retrieve value V from key K.
      Specified by:
      compute in interface Computable<K,V>
      Parameters:
      key - input data.
      Returns:
      output from the computation.
    • clear

      public void clear()
      Empty cache.
    • containsKey

      public boolean containsKey(K key)
      Returns true if the key has already been cached.
      Parameters:
      key -
      Returns:
      true if given key is present in the cache.
    • remove

      public void remove(K key)
      Remove item from the cache.
      Parameters:
      key - item key.
    • size

      public int size()
      Returns the size of the cache
      Returns:
      The number of elements in the cache