java 缓存的简单实现_一个简单的JAVA 缓存实现

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;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值