首页 > 代码库 > 50行代码实现缓存,JAVA内存模型原理
50行代码实现缓存,JAVA内存模型原理
遇见这样的高人怎么办??下面是一个简单缓存的实现,相当牛叉!自己看吧,只有50行代码。
摘自:http://www.oschina.net/code/snippet_55577_3887
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> perm; public SimpleCache(int maxCapacity) { this.maxCapacity = maxCapacity; this.eden = new ConcurrentHashMap<K,V>(maxCapacity); this.perm= new WeakHashMap<K,V>(maxCapacity); } public V get(K k) { V v = this.eden.get(k); if (v == null) { lock.lock(); try{ v = this.perm.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.perm.putAll(this.eden); }finally{ lock.unlock(); } this.eden.clear(); } this.eden.put(k, v); } }
50行代码实现缓存,JAVA内存模型原理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。