[转载]一个简单的内存缓存实现--一段漂亮的代码
2014-04-13 10:52
639 查看
转自:http://www.oschina.net/code/snippet_55577_3887
实现思路其实很简单,但是包装做的很好,很巧妙,值得新手借鉴。
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<K,V> { private final Lock lock = new ReentrantLock(); private final int maxCapacity; private final Map<K,V> eden; private final Map<K,V> longterm; public SimpleCache(int maxCapacity) { this.maxCapacity = maxCapacity; this.eden = new ConcurrentHashMap<K,V>(maxCapacity); this.longterm = new WeakHashMap<K,V>(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); } }
实现思路其实很简单,但是包装做的很好,很巧妙,值得新手借鉴。
相关文章推荐
- 一个简单的JavaScript数据缓存系统实现代码
- java 60 行代码写一个简单可用的并且带过期时间的内存缓存
- [转载]用verilog写一段代码,实现消除一个glitch
- 一个简单的JavaScript数据缓存系统实现代码
- 从零开始学C++之重载 operator new 和 operator delete 实现一个简单内存泄漏跟踪器
- C#一个简单的定时小程序实现代码
- Java实现一个简单的定时器代码解析
- 50行代码实现的一个最简单的基于 DirectShow 的视频播放器
- [转载] STL allocator的介绍和一个基于malloc/free的allocator的简单实现
- 用MFC实现的一个简单的photoshop软件的制作代码
- Android使用LinkedHashMap实现一个LRU算法的内存缓存
- 一段简单的内存检测代码
- ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
- 【iOS开展-50】使用它来创建一个新的类的实现代码包,因此,不自觉地练习简单MVC实验,附带动画
- 一个简单的Android客户端从服务器端获取json数据并解析的实现代码
- 50行代码实现的一个最简单的基于 DirectShow 的视频播放器
- python通过Tkinter库实现的一个简单的文本编辑器代码
- 一个简单T9输入法的实现(有代码)
- ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
- iOS开发之UI基础--纯代码自定义UItableviewcell实现一个简单的微博界面布局