利用LinkedHashMap实现移除最近最少使用的缓存策略,只需要重载removeEldestEntry(Entry<Object, Object> eldest)方法即可。
public class LruCache implements Cache {
private final Map<Object, Object> store;
public LruCache(URL url) {
final int max = url.getParameter("cache.size", 1000);
this.store = new LinkedHashMap<Object, Object>() {
private static final long serialVersionUID = -3834209229668463829L;
@Override
protected boolean removeEldestEntry(Entry<Object, Object> eldest) {
return size() > max;
}
};
}
public void put(Object key, Object value) {
synchronized (store) {
store.put(key, value);
}
}
public Object get(Object key) {
synchronized (store) {
return store.get(key);
}
}
} 参考:
http://dennis-zane.iteye.com/blog/128278
本文介绍了一种利用LinkedHashMap实现最近最少使用(LRU)缓存淘汰策略的方法。通过重写removeEldestEntry方法,当缓存大小超过设定的最大值时,自动移除最旧的条目。
2252

被折叠的 条评论
为什么被折叠?



