Interface LocalLoadingCache<C extends LocalCache<K,V>,K,V>

All Superinterfaces:
Cache<K,V>, LoadingCache<K,V>, LocalManualCache<C,K,V>
All Known Implementing Classes:
BoundedLocalCache.BoundedLocalLoadingCache, UnboundedLocalCache.UnboundedLocalLoadingCache

interface LocalLoadingCache<C extends LocalCache<K,V>,K,V> extends LocalManualCache<C,K,V>, LoadingCache<K,V>
This class provides a skeletal implementation of the LoadingCache interface to minimize the effort required to implement a LocalCache.
  • Field Details

    • logger

      static final Logger logger
  • Method Details

    • cacheLoader

      CacheLoader<? super K,V> cacheLoader()
      Returns the CacheLoader used by this cache.
    • mappingFunction

      Function<K,V> mappingFunction()
      Returns the CacheLoader as a mapping function.
    • hasBulkLoader

      boolean hasBulkLoader()
      Returns whether the cache loader supports bulk loading.
    • hasLoadAll

      default boolean hasLoadAll(CacheLoader<? super K,V> loader)
      Returns whether the supplied cache loader has bulk load functionality.
    • get

      default V get(K key)
      Description copied from interface: LoadingCache
      Returns the value associated with the key in this cache, obtaining that value from CacheLoader.load(Object) if necessary.

      If another call to LoadingCache.get(K) is currently loading the value for the key, this thread simply waits for that thread to finish and returns its loaded value. Note that multiple threads can concurrently load values for distinct keys.

      If the specified key is not already associated with a value, attempts to compute its value and enters it into this cache unless null. The entire method invocation is performed atomically, so the function is applied at most once per key. Some attempted update operations on this cache by other threads may be blocked while the computation is in progress, so the computation should be short and simple, and must not attempt to update any other mappings of this cache.

      Specified by:
      get in interface LoadingCache<C extends LocalCache<K,V>,K>
      Parameters:
      key - key with which the specified value is to be associated
      Returns:
      the current (existing or computed) value associated with the specified key, or null if the computed value is null
    • getAll

      default Map<K,V> getAll(Iterable<? extends K> keys)
      Description copied from interface: LoadingCache
      Returns a map of the values associated with the keys, creating or retrieving those values if necessary. The returned map contains entries that were already cached, combined with the newly loaded entries; it will never contain null keys or values.

      Caches loaded by a CacheLoader will issue a single request to CacheLoader.loadAll(java.lang.Iterable<? extends K>) for all keys which are not already present in the cache. All entries returned by CacheLoader.loadAll(java.lang.Iterable<? extends K>) will be stored in the cache, over-writing any previously cached values. If another call to LoadingCache.get(K) tries to load the value for a key in keys, implementations may either have that thread load the entry or simply wait for this thread to finish and returns the loaded value. In the case of overlapping non-blocking loads, the last load to complete will replace the existing entry. Note that multiple threads can concurrently load values for distinct keys.

      Note that duplicate elements in keys, as determined by Object.equals(java.lang.Object), will be ignored.

      Specified by:
      getAll in interface LoadingCache<C extends LocalCache<K,V>,K>
      Parameters:
      keys - the keys whose associated values are to be returned
      Returns:
      the unmodifiable mapping of keys to values for the specified keys in this cache
    • loadSequentially

      default Map<K,V> loadSequentially(Iterable<? extends K> keys)
      Sequentially loads each missing entry.
    • loadInBulk

      default Map<K,V> loadInBulk(Iterable<? extends K> keys)
      Batch loads the missing entries.
    • bulkLoad

      default void bulkLoad(Set<K> keysToLoad, Map<K,V> result)
      Performs a non-blocking bulk load of the missing keys. Any missing entry that materializes during the load are replaced when the loaded entries are inserted into the cache.
    • refresh

      default void refresh(K key)
      Description copied from interface: LoadingCache
      Loads a new value for the key, asynchronously. While the new value is loading the previous value (if any) will continue to be returned by get(key) unless it is evicted. If the new value is loaded successfully it will replace the previous value in the cache; if an exception is thrown while refreshing the previous value will remain, and the exception will be logged (using Logger) and swallowed.

      Caches loaded by a CacheLoader will call CacheLoader.reload(K, V) if the cache currently contains a value for the key, and CacheLoader.load(K) otherwise. Loading is asynchronous by delegating to the default executor.

      Specified by:
      refresh in interface LoadingCache<C extends LocalCache<K,V>,K>
      Parameters:
      key - key with which a value may be associated