Package com.cedarsoftware.util
Class LRUCache<K,V>
java.lang.Object
java.util.AbstractMap<K,V>
com.cedarsoftware.util.LRUCache<K,V>
- All Implemented Interfaces:
Map<K,
V>
This class provides a thread-safe Least Recently Used (LRU) cache API that will evict the least recently used items,
once a threshold is met. It implements the Map interface for convenience. It is thread-safe via usage of
ConcurrentHashMap for internal storage. The .get(), .remove(), and .put() APIs operate in O(1) without any
blocking. A background thread monitors and cleans up the internal Map if it exceeds capacity. In addition, if
.put() causes the background thread to be triggered to start immediately. This will keep the size of the LRUCache
close to capacity even with bursty loads without reducing insertion (put) performance.
- Author:
- John DeRegnaucourt ([email protected])
Copyright (c) Cedar Software LLC
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
License
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
-
Nested Class Summary
Nested classes/interfaces inherited from class java.util.AbstractMap
AbstractMap.SimpleEntry<K,
V>, AbstractMap.SimpleImmutableEntry<K, V> -
Constructor Summary
Constructors -
Method Summary
Methods inherited from class java.util.AbstractMap
clone, isEmpty, putAll
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, isEmpty, merge, putAll, putIfAbsent, remove, replace, replace, replaceAll
-
Constructor Details
-
LRUCache
public LRUCache(int capacity)
-
-
Method Details
-
get
-
put
-
remove
-
clear
public void clear() -
size
public int size() -
containsKey
- Specified by:
containsKey
in interfaceMap<K,
V> - Overrides:
containsKey
in classAbstractMap<K,
V>
-
containsValue
- Specified by:
containsValue
in interfaceMap<K,
V> - Overrides:
containsValue
in classAbstractMap<K,
V>
-
entrySet
-
keySet
-
values
-
equals
-
hashCode
public int hashCode() -
toString
- Overrides:
toString
in classAbstractMap<K,
V>
-