Package com.cedarsoftware.util.cache
Class LockingLRUCacheStrategy<K,V>
java.lang.Object
com.cedarsoftware.util.cache.LockingLRUCacheStrategy<K,V>
- All Implemented Interfaces:
Map<K,
V>
This class provides a thread-safe Least Recently Used (LRU) cache API that evicts the least recently used items
once a threshold is met. It implements the
Map
interface for convenience.
The Locking strategy allows for O(1) access for get(), put(), and remove(). For put(), remove(), and many other methods, a write-lock is obtained. For get(), it attempts to lock but does not lock unless it can obtain it right away. This 'try-lock' approach ensures that the get() API is never blocking, but it also means that the LRU order is not perfectly maintained under heavy load.
LRUCache supports null
for both key and value.
- 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
-
Constructor Summary
Constructors -
Method Summary
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
-
Constructor Details
-
LockingLRUCacheStrategy
public LockingLRUCacheStrategy(int capacity)
-
-
Method Details
-
get
-
put
-
putAll
-
remove
-
clear
public void clear() -
size
public int size() -
isEmpty
public boolean isEmpty() -
containsKey
- Specified by:
containsKey
in interfaceMap<K,
V>
-
containsValue
- Specified by:
containsValue
in interfaceMap<K,
V>
-
entrySet
-
keySet
-
values
-
equals
-
toString
-
hashCode
public int hashCode()
-