读书人

JAVA的简略缓存机制

发布时间: 2013-11-06 16:26:37 作者: rapoo

JAVA的简单缓存机制

package cache;import java.util.Date;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.Map;import java.util.Set;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;}/** * 增加缓存 */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;}public boolean removeCache(Object key){cacheMap.remove(key);cacheConfMap.remove(key);System.out.println("now removeCache=="+cacheMap.size());return true;}public 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 blocke.printStackTrace();}}}}}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;}}

读书人网 >编程

热点推荐