public interface LoadingCache<K,V> extends Cache<K,V>, Function<K,V>
Implementations of this interface are expected to be thread-safe, and can be safely accessed by multiple concurrent threads.
When evaluated as a Function
, a cache yields the same result as invoking
#getUnchecked
.
Note that while this class is still annotated as Beta
, the API is frozen from a
consumer's standpoint. In other words existing methods are all considered non-Beta
and
won't be changed without going through an 18 month deprecation cycle; however new methods may be
added at any time.
Modifier and Type | Method and Description |
---|---|
V |
apply(K key)
Deprecated.
Provided to satisfy the
Function interface; use get(K) or
#getUnchecked instead. |
V |
get(K key)
Returns the value associated with
key in this cache, first loading that value if
necessary. |
getIfPresent, put
V get(K key) throws ExecutionException
key
in this cache, first loading that value if
necessary. No observable state associated with this cache is modified until loading completes.
If another call to get(K)
or #getUnchecked
is currently loading the value for
key
, simply waits for that thread to finish and returns its loaded value. Note that
multiple threads can concurrently load values for distinct keys.
Caches loaded by a CacheLoader
will call CacheLoader.load(K)
to load new values
into the cache. Newly loaded values are added to the cache using
Cache.asMap().putIfAbsent
after loading has completed; if another value was associated
with key
while the new value was loading then a removal notification will be sent for
the new value.
If the cache loader associated with this cache is known not to throw checked
exceptions, then prefer #getUnchecked
over this method.
ExecutionException
- if a checked exception was thrown while loading the value. (ExecutionException
is thrown even if
computation was interrupted by an InterruptedException
.)UncheckedExecutionException
- if an unchecked exception was thrown while loading the
valueExecutionError
- if an error was thrown while loading the value@Deprecated V apply(K key)
Function
interface; use get(K)
or
#getUnchecked
instead.apply
in interface Function<K,V>
UncheckedExecutionException
- if an exception was thrown while loading the value. (As
described in the documentation for #getUnchecked
, LoadingCache
should be
used as a Function
only with cache loaders that throw only unchecked exceptions.)Copyright © 2007-2024, Oracle and/or its affiliates. All Rights Reserved. Use is subject to license terms.