博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LRUCache
阅读量:6825 次
发布时间:2019-06-26

本文共 2231 字,大约阅读时间需要 7 分钟。

import java.util.LinkedHashMap;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class LRUCache
extends LinkedHashMap
{ private static final long serialVersionUID = -656812640814484468L; /** 默认最大容量 */ private static final int DEFAULT_MAX_CAPACITY = 300; private static final int INITIALCAPACITY = 16; /** 负载因子 */ private static final float DEFAULT_LOAD_FACTOR = 0.75f; private final Lock lock = new ReentrantLock(); private volatile int maxCapacity; /** *
* ------------------------------
*/ public LRUCache() { this(DEFAULT_MAX_CAPACITY); } public LRUCache(int maxCapacity) { super(INITIALCAPACITY, DEFAULT_LOAD_FACTOR, Boolean.TRUE); this.maxCapacity = maxCapacity; } @Override protected boolean removeEldestEntry(java.util.Map.Entry
eldest) { return size() > maxCapacity; } @Override public V get(Object key) { try { lock.lock(); return super.get(key); } finally { lock.unlock(); } } public V put(K key, V value) { try { lock.lock(); return super.put(key, value); } finally { lock.unlock(); } } @Override public V remove(Object key) { try { lock.lock(); return super.remove(key); } finally { lock.unlock(); } } @Override public boolean containsKey(Object key) { try { lock.lock(); return super.containsKey(key); } finally { lock.unlock(); } } @Override public void clear() { try { lock.lock(); super.clear(); } finally { lock.unlock(); } } @Override public int size() { try { lock.lock(); return super.size(); } finally { lock.unlock(); } } /** * 获得maxCapacity * @return the maxCapacity */ public int getMaxCapacity() { return maxCapacity; } /** * 设置maxCapacity * @param maxCapacity the maxCapacity to set */ public void setMaxCapacity(int maxCapacity) { this.maxCapacity = maxCapacity; }}
public class Main {		public static void main(String[] args) {		LRUCache
lruCache = new LRUCache
(2); lruCache.put("1", "1"); lruCache.put("2", "2"); System.out.println(lruCache); lruCache.put("3", "3"); System.out.println(lruCache); }}

{1=1, 2=2}

{2=2, 3=3}
 

转载于:https://www.cnblogs.com/java-wl/archive/2012/05/10/2923189.html

你可能感兴趣的文章
input 子系统架构总结【转】
查看>>
转帖:解决jquery.js在myeclipse中报错的问题
查看>>
Linux下查看文件和文件夹大小
查看>>
redis总结
查看>>
CsGL着色的三角形
查看>>
后端码农谈前端(CSS篇)第七课:定位与浮动
查看>>
springboot(十八):使用Spring Boot集成FastDFS
查看>>
何勉:第一性原理和精益敏捷的规模化实施
查看>>
HDFS 文件格式——SequenceFile RCFile
查看>>
处理 Oracle SQL in 超过1000 的解决方案
查看>>
精致的JS提示
查看>>
Visual Studio.Net 2005中用SqlDataSource处理数据库特殊数据类型
查看>>
【CSS】创建布局
查看>>
docker进入容器的方式
查看>>
详解JavaScript闭包
查看>>
Oracle 介绍 (未完待续)
查看>>
pitch yaw roll是什么
查看>>
windows2003批量添加和导出所有ip
查看>>
消息服务介绍
查看>>
【Android 我的博客APP】1.抓取博客首页文章列表内容——网页数据抓取
查看>>