- Type Parameters:
V
- the type of value objects.
public static interface Cache.Handler<V>
The handler returned by
See the
Cache.lock(K)
, to be used for unlocking and storing the result.
This handler should be used as below (the try
… finally
statements are important):
Value V = null;
Cache.Handler<V> handler = cache.lock(key);
try {
value = handler.peek();
if (value == null) {
value = createMyObject(key);
}
} finally {
handler.putAndUnlock(value);
}
Cache
javadoc for a more complete example.- Since:
- 0.3
-
Method Summary
Modifier and TypeMethodDescriptionpeek()
If the value is already in the cache, returns it.void
putAndUnlock
(V result) Stores the given value in the cache and release the lock.
-
Method Details
-
peek
V peek()If the value is already in the cache, returns it. Otherwise returnsnull
. This method should be invoked after theHandler
creation in case a value has been computed in another thread.- Returns:
- the value from the cache, or
null
if none.
-
putAndUnlock
Stores the given value in the cache and release the lock. This method must be invoked in afinally
block, no matter what the result is.- Parameters:
result
- the result to store in the cache, ornull
for removing the entry from the cache. If an entry is removed, a new computation will be attempted the next time a handler is created for the same key.- Throws:
IllegalStateException
- may be thrown if this method is not invoked in the pattern described in class javadoc, or if a key collision occurs.
-