Java实现缓存Cache的实现代码
来源:爱站网时间:2019-04-07编辑:网友分享
所谓的缓存是将程序或系统调用的对象存储在内存中,一旦使用了这些对象,就可以快速调用它们,今天不妨跟着爱站技术频道小编进下文学习一下!文中还会介绍Java实现缓存Cache的实现代码。
所谓的缓存是将程序或系统调用的对象存储在内存中,一旦使用了这些对象,就可以快速调用它们,今天不妨跟着爱站技术频道小编进下文学习一下!文中还会介绍Java实现缓存Cache的实现代码。
原理是使用LinkedHashMap来实现,当缓存超过大小时,将会删除最老的一个元组。
实现代码如下所示
import java.util.LinkedHashMap;
import java.util.Map;
public class LRUCache {
public static class CachedData {
private Object data = null;
private long time = 0;
private boolean refreshing = false;
public CachedData(Object data) {
this.data = data;
this.time = System.currentTimeMillis();
}
public Object getData() {
return data;
}
public long getTime() {
return time;
}
public void setTime(long time) {
this.time = time;
}
public boolean getRefreshing() {
return refreshing;
}
public void setRefreshing(boolean b) {
this.refreshing = b;
}
}
protected static class CacheMap extends LinkedHashMap {
protected int maxsize = 0;
public CacheMap(int maxsize) {
super(maxsize * 4 / 3 + 1, 0.75f, true);
this.maxsize = maxsize;
}
protected boolean removeEldestEntry(Map.Entry eldest) {
return size() > this.maxsize;
}
}
protected CacheMap map = null;
public LRUCache(int size) {
this.map = new CacheMap(size);
}
public synchronized void set(Object key, Object value) {
map.remove(key);
map.put(key, new CachedData(value));
}
public synchronized void remove(Object key) {
map.remove(key);
}
public synchronized CachedData get(Object key) {
CachedData value = (CachedData) map.get(key);
if (value == null) {
return null;
}
map.remove(key);
map.put(key, value);
return value;
}
public int usage() {
return map.size();
}
public int capacity() {
return map.maxsize;
}
public void clear() {
map.clear();
}
}
以上就是爱站技术频道为各位朋友们介绍的Java实现缓存Cache的实现代码,大家可以在上文中获得非常全面的信息,希望上面的内容,可以为大家提供帮助。