@Override @Nullable public ValueWrapper get(Object key) { Element element = lookup(key); return toValueWrapper(element); }
@SuppressWarnings("unchecked") @Override @Nullable public <T> T get(Object key, Callable<T> valueLoader) { Element element = lookup(key); if (element != null) { return (T) element.getObjectValue(); } else { this.cache.acquireWriteLockOnKey(key); try { element = lookup(key); // one more attempt with the write lock if (element != null) { return (T) element.getObjectValue(); } else { return loadValue(key, valueLoader); } } finally { this.cache.releaseWriteLockOnKey(key); } } }
@Override @Nullable public ValueWrapper get(Object key) { Element element = lookup(key); return toValueWrapper(element); }
@SuppressWarnings("unchecked") @Override @Nullable public <T> T get(Object key, Callable<T> valueLoader) { Element element = lookup(key); if (element != null) { return (T) element.getObjectValue(); } else { this.cache.acquireWriteLockOnKey(key); try { element = lookup(key); // one more attempt with the write lock if (element != null) { return (T) element.getObjectValue(); } else { return loadValue(key, valueLoader); } } finally { this.cache.releaseWriteLockOnKey(key); } } }
@Override public ValueWrapper get(Object key) { Element element = lookup(key); return toValueWrapper(element); }
@SuppressWarnings("unchecked") @Override public <T> T get(Object key, Callable<T> valueLoader) { Element element = lookup(key); if (element != null) { return (T) element.getObjectValue(); } else { this.cache.acquireWriteLockOnKey(key); try { element = lookup(key); // one more attempt with the write lock if (element != null) { return (T) element.getObjectValue(); } else { return loadValue(key, valueLoader); } } finally { this.cache.releaseWriteLockOnKey(key); } } }