博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转)超简单的缓存实现
阅读量:6258 次
发布时间:2019-06-22

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

  
基于ConcurrentHashMap和WeakHashMap的简单缓存实现 package test; import java.util.Map;import java.util.WeakHashMap;import java.util.concurrent.ConcurrentHashMap;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock; public final class SimpleCache
{ private final Lock lock = new ReentrantLock(); private final int maxCapacity; private final Map
eden; private final Map
longterm; public SimpleCache(int maxCapacity) { this.maxCapacity = maxCapacity; this.eden = new ConcurrentHashMap
(maxCapacity); this.longterm = new WeakHashMap
(maxCapacity); } public V get(K k) { V v = this.eden.get(k); if (v == null) { lock.lock(); try{ v = this.longterm.get(k); }finally{ lock.unlock(); } if (v != null) { this.eden.put(k, v); } } return v; } public void put(K k, V v) { if (this.eden.size() >= maxCapacity) { lock.lock(); try{ this.longterm.putAll(this.eden); }finally{ lock.unlock(); } this.eden.clear(); } this.eden.put(k, v); }}

  

 

转载于:https://www.cnblogs.com/JsonShare/p/4012912.html

你可能感兴趣的文章
看博客学学Android(七)
查看>>
19.05.02--存储二进制数据
查看>>
linux输出与查看的几种方式
查看>>
HDU - 3516 Tree Construction
查看>>
Bind安装配置及应用
查看>>
滚动数组+离线 优化
查看>>
合并两个有序数组的golang实现
查看>>
单元测试 模块接口测试
查看>>
洛谷P3371【模板】单源最短路径
查看>>
dedecms---一个简单酷站的构建及解析
查看>>
初识nodeJS
查看>>
HTTP协议
查看>>
3.2 Multi-Master Replication
查看>>
vs调试 LINK : fatal error LNK1104 ...exe
查看>>
陶哲轩实分析 习题 13.4.6
查看>>
DP ZOJ 2745 01-K Code
查看>>
【转载】清华梦的粉碎—写给清华大学的退学申请
查看>>
在ASP.NET MVC3 中利用JSONP跨域登录WEB系统
查看>>
执行计划基础 动态采样
查看>>
课后作业-阅读任务-阅读提问-3
查看>>