带锁的线程安全的LRULinkedHashMap简单实现

来源:互联网 发布:淘宝网肚皮舞服装新款 编辑:程序博客网 时间:2024/05/18 00:40
import java.util.LinkedHashMap;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class LRULinkedHashMap<K, V> extends LinkedHashMap<K, V> {/** *  */private static final long serialVersionUID = -952299094512767664L;private final int maxCapacity;private static final float DEFAULT_LOAD_FACTOR = 0.75f;private final Lock lock = new ReentrantLock();public LRULinkedHashMap(int maxCapacity) {super(maxCapacity, DEFAULT_LOAD_FACTOR, true);this.maxCapacity = maxCapacity;}@Overrideprotected boolean removeEldestEntry(java.util.Map.Entry<K, V> eldest) {return size() > maxCapacity;}@Overridepublic V get(Object key) {try {lock.lock();return super.get(key);} finally {lock.unlock();}}//可以根据实际情况,考虑对不同的操作加锁@Overridepublic V put(K key, V value) {try {                        lock.lock();return super.put(key, value);} finally {                        lock.unlock();}}}

0 0
原创粉丝点击