Module org.omnifaces
Package org.omnifaces.util.cache
Class LruCache<K extends Serializable,V extends Serializable>
java.lang.Object
org.omnifaces.util.cache.LruCache<K,V>
- Type Parameters:
K- The generic map key type.V- The generic map value type.
- All Implemented Interfaces:
Serializable,ConcurrentMap<K,,V> Map<K,V>
public class LruCache<K extends Serializable,V extends Serializable>
extends Object
implements ConcurrentMap<K,V>, Serializable
Minimal implementation of thread safe LRU cache with support for eviction listener. Inspired by
ConcurrentLinkedHashMap.
The compute methods hold the lock while the function runs, so the function must be short and must not access this cache, else it will block every other caller or deadlock. The eviction listener runs after the lock is released.
- Since:
- 4.4
- Author:
- Bauke Scholtz
- See Also:
-
Nested Class Summary
-
Constructor Summary
ConstructorsConstructorDescriptionLruCache(int maximumCapacity) Construct LRU cache with given maximum capacity.LruCache(int maximumCapacity, FunctionalInterfaces.SerializableBiConsumer<K, V> evictionListener) Construct LRU cache with given maximum capacity and eviction listener. -
Method Summary
Modifier and TypeMethodDescriptionvoidclear()computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction) computeIfPresent(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction) booleancontainsKey(Object key) booleancontainsValue(Object value) entrySet()booleanisEmpty()keySet()voidputIfAbsent(K key, V value) booleanbooleanintsize()values()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.util.concurrent.ConcurrentMap
forEach, getOrDefault, replaceAll
-
Constructor Details
-
LruCache
public LruCache(int maximumCapacity) Construct LRU cache with given maximum capacity.- Parameters:
maximumCapacity- The maximum capacity.- Throws:
IllegalArgumentException- when maximum capacity is less than 2.
-
LruCache
public LruCache(int maximumCapacity, FunctionalInterfaces.SerializableBiConsumer<K, V> evictionListener) Construct LRU cache with given maximum capacity and eviction listener.- Parameters:
maximumCapacity- The maximum capacity.evictionListener- The eviction listener.- Throws:
IllegalArgumentException- when maximum capacity is less than 2.
-
-
Method Details
-
get
- Specified by:
getin interfaceMap<K extends Serializable,V extends Serializable>
-
put
- Specified by:
putin interfaceMap<K extends Serializable,V extends Serializable>
-
putIfAbsent
- Specified by:
putIfAbsentin interfaceConcurrentMap<K extends Serializable,V extends Serializable> - Specified by:
putIfAbsentin interfaceMap<K extends Serializable,V extends Serializable>
-
computeIfAbsent
- Specified by:
computeIfAbsentin interfaceConcurrentMap<K extends Serializable,V extends Serializable> - Specified by:
computeIfAbsentin interfaceMap<K extends Serializable,V extends Serializable>
-
computeIfPresent
- Specified by:
computeIfPresentin interfaceConcurrentMap<K extends Serializable,V extends Serializable> - Specified by:
computeIfPresentin interfaceMap<K extends Serializable,V extends Serializable>
-
compute
- Specified by:
computein interfaceConcurrentMap<K extends Serializable,V extends Serializable> - Specified by:
computein interfaceMap<K extends Serializable,V extends Serializable>
-
merge
- Specified by:
mergein interfaceConcurrentMap<K extends Serializable,V extends Serializable> - Specified by:
mergein interfaceMap<K extends Serializable,V extends Serializable>
-
putAll
- Specified by:
putAllin interfaceMap<K extends Serializable,V extends Serializable>
-
remove
- Specified by:
removein interfaceMap<K extends Serializable,V extends Serializable>
-
remove
- Specified by:
removein interfaceConcurrentMap<K extends Serializable,V extends Serializable> - Specified by:
removein interfaceMap<K extends Serializable,V extends Serializable>
-
replace
- Specified by:
replacein interfaceConcurrentMap<K extends Serializable,V extends Serializable> - Specified by:
replacein interfaceMap<K extends Serializable,V extends Serializable>
-
replace
- Specified by:
replacein interfaceConcurrentMap<K extends Serializable,V extends Serializable> - Specified by:
replacein interfaceMap<K extends Serializable,V extends Serializable>
-
clear
public void clear()- Specified by:
clearin interfaceMap<K extends Serializable,V extends Serializable>
-
size
public int size()- Specified by:
sizein interfaceMap<K extends Serializable,V extends Serializable>
-
isEmpty
public boolean isEmpty()- Specified by:
isEmptyin interfaceMap<K extends Serializable,V extends Serializable>
-
containsKey
- Specified by:
containsKeyin interfaceMap<K extends Serializable,V extends Serializable>
-
containsValue
- Specified by:
containsValuein interfaceMap<K extends Serializable,V extends Serializable>
-
keySet
- Specified by:
keySetin interfaceMap<K extends Serializable,V extends Serializable>
-
values
- Specified by:
valuesin interfaceMap<K extends Serializable,V extends Serializable>
-
entrySet
- Specified by:
entrySetin interfaceMap<K extends Serializable,V extends Serializable>
-