Class CacheLoader<K,​V>


  • public abstract class CacheLoader<K,​V>
    extends Object
    Computes or retrieves values, based on a key, for use in populating a LoadingCache.

    Most implementations will only need to implement load(K). Other methods may be overridden as desired.

    Usage example:

       
     <p>
       CacheLoader<Key, Graph> loader = new CacheLoader<Key, Graph>() {
         public Graph load(Key key) throws AnyException {
           return createExpensiveGraph(key);
         }
       };
       LoadingCache<Key, Graph> cache = CacheBuilder.newBuilder().build(loader);
    Since:
    10.0
    Author:
    Charles Fry
    • Constructor Detail

      • CacheLoader

        protected CacheLoader()
        Constructor for use by subclasses.
    • Method Detail

      • load

        public abstract V load​(K key)
                        throws Exception
        Computes or retrieves the value corresponding to key.
        Parameters:
        key - the non-null key whose value should be loaded
        Returns:
        the value associated with key; must not be null
        Throws:
        Exception - if unable to load the result
        InterruptedException - if this method is interrupted. InterruptedException is treated like any other Exception in all respects except that, when it is caught, the thread's interrupt status is set
      • reload

        public ListenableFuture<V> reload​(K key,
                                          V oldValue)
                                   throws Exception
        Computes or retrieves a replacement value corresponding to an already-cached key. This method is called when an existing cache entry is refreshed by CacheBuilder#refreshAfterWrite, or through a call to LoadingCache#refresh.

        This implementation synchronously delegates to load(K). It is recommended that it be overridden with an asynchronous implementation when using CacheBuilder#refreshAfterWrite.

        Note: all exceptions thrown by this method will be logged and then swallowed.

        Parameters:
        key - the non-null key whose value should be loaded
        oldValue - the non-null old value corresponding to key
        Returns:
        the future new value associated with key; must not be null, must not return null
        Throws:
        Exception - if unable to reload the result
        InterruptedException - if this method is interrupted. InterruptedException is treated like any other Exception in all respects except that, when it is caught, the thread's interrupt status is set
        Since:
        11.0