首页 > 其他 > 详细

用hashmap实现自己的缓存

时间:2017-11-14 21:59:54      阅读:293      评论:0      收藏:0      [点我收藏+]

@SuppressWarnings({"unchecked", "rawtypes"})
public class DefaultCache implements Cache {
private Map cache = new HashMap();

private DefaultCache() {
}

public static DefaultCache getInstance() {
return DefaultCacheFactory.getInstance();
}

private static class DefaultCacheFactory{
private static DefaultCache instance = new DefaultCache();

private static DefaultCache getInstance(){
return instance;
}
}

public void init() {
cache = new HashMap();
}

public void stop() {
}

public void add(String key, Object value) {
cache.put(key, value);
}

public void add(String fqn, String key, Object value) {
Map map = (Map) cache.get(fqn);
if (map == null) {
synchronized (this) {
map = (Map) cache.get(fqn);
if(map == null){
map = new HashMap();
map.put(key, value); // 防止指令重排序
cache.put(fqn, map);
}
}
}
map.put(key, value);
}

public Object get(String fqn, String key) {
Map map = (Map) cache.get(fqn);
if (map == null) {
return null;
}
return map.get(key);
}

public Object get(String key) {
return cache.get(key);
}

public Collection getValues(String key) {
Map map = (Map) cache.get(key);
if (map == null) {
return new ArrayList();
}
return map.values();
}

public void remove(String fqn, String key) {
Map map = (Map) cache.get(fqn);
if (map != null) {
map.remove(key);
}
}

public void remove(String key) {
cache.remove(key);
}
}

用hashmap实现自己的缓存

原文:http://www.cnblogs.com/panxuejun/p/7834619.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!