Package io.github.xanthic.cache.core
Class LockedAbstractCache<K,V>
java.lang.Object
io.github.xanthic.cache.core.LockedAbstractCache<K,V>
- Type Parameters:
K- The type of keys that form the cacheV- The type of values contained in the cache
- All Implemented Interfaces:
io.github.xanthic.cache.api.Cache<K,V>
public abstract class LockedAbstractCache<K,V>
extends Object
implements io.github.xanthic.cache.api.Cache<K,V>
Safely implements
Cache methods using ReadWriteLock.
This abstraction allows for underlying cache providers to implement
the Cache interface in a thread-safe manner, even if the
underlying cache does not already implement the more "exotic"
write methods required by the Cache contract.
As this abstraction has a performance hit, it should be avoided if the backing cache provider already provides an implementation for these methods.
Does not support null values.
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidclear()protected abstract voidcomputeIfAbsent(K key, @NotNull Function<K, V> computeFunc) computeIfPresent(K key, @NotNull BiFunction<? super K, ? super V, ? extends V> computeFunc) protected abstract VgetUnlocked(K key) voidputIfAbsent(K key, V value) protected abstract voidputUnlocked(K key, V value) protected <T> Tprotected abstract voidremoveUnlocked(K key) booleanbooleanlongsize()protected abstract longprotected <T> TMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface io.github.xanthic.cache.api.Cache
forEach, getOrDefault
-
Field Details
-
lock
-
-
Constructor Details
-
LockedAbstractCache
public LockedAbstractCache()
-
-
Method Details
-
get
-
put
-
remove
-
clear
public void clear() -
size
public long size() -
compute
-
computeIfAbsent
-
computeIfPresent
-
putIfAbsent
-
merge
-
replace
-
replace
-
putAll
-
getUnlocked
-
putUnlocked
-
removeUnlocked
-
clearUnlocked
protected abstract void clearUnlocked() -
sizeUnlocked
protected abstract long sizeUnlocked() -
read
-
write
-