public class AlwaysInvalidatingCacheDecorator<K,V>
This decorator ensures that when invalidate() is called while CacheLoader.load() is being executed, the loaded value will be invalidated.
Both get() and invalidate() share the same exclusive reentrant lock, thus making it safe to call invalidate from within load() method.
If invalidate() is called during get(), get() will be retried. This will happen only once, a subsequent attempt to invalidate during get()
will result in a IllegalStateException.
Note: invalidateAll() cannot be called from get().