缓存机制
来源:互联网 发布:买家淘宝怎么刷信誉 编辑:程序博客网 时间:2024/05/16 12:31
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;
}
}
- 缓存机制
- 缓存机制
- 缓存机制
- 缓存机制
- 缓存机制
- 缓存机制
- 缓存机制
- 缓存机制
- 缓存机制
- 缓存机制
- 缓存机制
- 【缓存】-浏览器缓存机制
- HTTP缓存机制--客户端缓存
- IOS开发缓存机制----内存缓存机制
- IOS 开发缓存机制----内存缓存机制
- iOS缓存机制详解 LRU缓存机制
- Hibernate缓存机制和MyBatis缓存机制
- mybatis缓存机制与hibernate缓存机制
- ArcSDE分布式配置
- (转):内存器件介绍之RAM篇(六)
- PM面试题目
- v$sql,v$sqlarea,v$sqltext 和 v$sql_plan 说明
- 视图和表的区别
- 缓存机制
- 低级计算器。。。
- 正则表达式
- 题记
- SQL里,如何同时插入几条值?不重复进行insert into XX valuesXXX
- VC代码的编写和调试
- 2011项目经理面试中常被问到的12问题
- 跑马灯 -- marquee
- Nokia N800开发经验