缓存的简单实现
2013-04-03 18:54
225 查看
CacheMgr.java import java.util.*; import cn.javass.framework.cache.vo.CacheConfModel; public class CacheMgr { private static Map cacheMap = new HashMap(); private static Map cacheConfMap = new HashMap(); private CacheMgr(){ } private static CacheMgr cm = null; public static CacheMgr getInstance(){ if(cm==null){ cm = new CacheMgr(); Thread t = new ClearCache(); t.start(); } return cm; } /** * 增加缓存 * @param key * @param value * @param ccm 缓存对象 * @return */ public boolean addCache(Object key,Object value,CacheConfModel ccm){ boolean flag = false; cacheMap.put(key, value); cacheConfMap.put(key, ccm); System.out.println("now addcache=="+cacheMap.size()); return true; } /** * 删除缓存 * @param key * @return */ public boolean removeCache(Object key){ cacheMap.remove(key); cacheConfMap.remove(key); System.out.println("now removeCache=="+cacheMap.size()); return true; } /** * 清除缓存的类 * @author wanglj * 继承Thread线程类 */ private static class ClearCache extends Thread{ public void run(){ while(true){ Set tempSet = new HashSet(); Set set = cacheConfMap.keySet(); Iterator it = set.iterator(); while(it.hasNext()){ Object key = it.next(); CacheConfModel ccm = (CacheConfModel)cacheConfMap.get(key); //比较是否需要清除 if(!ccm.isForever()){ if((new Date().getTime()-ccm.getBeginTime())>= ccm.getDurableTime()*60*1000){ //可以清除,先记录下来 tempSet.add(key); } } } //真正清除 Iterator tempIt = tempSet.iterator(); while(tempIt.hasNext()){ Object key = tempIt.next(); cacheMap.remove(key); cacheConfMap.remove(key); } System.out.println("now thread================>"+cacheMap.size()); //休息 try { Thread.sleep(60*1000L); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } } CacheConfModel.java public class CacheConfModel implements java.io.Serializable{ private long beginTime; private boolean isForever = false; private int durableTime; public long getBeginTime() { return beginTime; } public void setBeginTime(long beginTime) { this.beginTime = beginTime; } public boolean isForever() { return isForever; } public void setForever(boolean isForever) { this.isForever = isForever; } public int getDurableTime() { return durableTime; } public void setDurableTime(int durableTime) { this.durableTime = durableTime; } }
相关文章推荐
- [代码积累]C#中泛型缓存的简单实现
- map实现简单缓存
- 高并发二级缓存的简单实现
- nilcms file类 简单文件缓存实现
- 简单实现缓存需求
- Java实现一个简单的缓存方法
- 简单的java缓存实现
- groupcache源码走读(一):实现一个简单缓存
- 简单的java缓存实现(LRU,LFU,FIFO)
- 使用go语言的list实现一个简单的LRU缓存
- Java实现简单的LRU缓存(A Simple LRU Cache in 5 lines)
- java缓存的简单实现
- java并发-使用内置条件队列实现简单的有界缓存
- (转)超简单的缓存实现
- PHP Memcached 实现简单数据库缓存
- 简单实现缓存需求
- 简单LRU算法实现缓存大小的限制策略
- Lru缓存的简单实现
- 一个简单的JavaScript数据缓存系统实现代码
- 简单的Map缓存机制实现