您的位置:首页 > 编程语言 > Java开发

java Map定时过期类

2016-03-24 13:49 399 查看
package com.ltx.system.util;

import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Timer;
import java.util.TimerTask;

public class JTime {
private static Map<String,Object> timekey = new HashMap<String,Object>();//time主属性 用于存放 需要保存的字段
private static Map<String,Long> keytime = new HashMap<String,Long>();//time主属性 用于存放 需要保存的字段
//	private static final long EXPIRATIONTIME=1000*60*90;//1个半小时
private static final long EXPIRATIONTIME=1000*20;//测试用20秒
private static final int START=0;//设置执行开始时间
private static final int INTERVAL=10000;//设置间隔执行时间 单位/毫秒
public static void put(String key,Object vale){
timekey.put(key, vale);
keytime.put(key, new Date().getTime());
}

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

static{
Timer tt=new Timer();//定时类
tt.schedule(new TimerTask(){//创建一个定时任务
@Override
public void run() {
long nd = new Date().getTime();//获取系统时间
Iterator<Entry<String, Long>> entries = keytime.entrySet().iterator();
while (entries.hasNext()) {
Map.Entry<String,Object> entry = (Map.Entry) entries.next();
String key = (String)entry.getKey(); //获取key
long value = (Long)entry.getValue(); //获取value
long rt = nd - value;//获取当前时间跟存入时间的差值
if(rt>EXPIRATIONTIME){//判断时间是否已经过期  如果过期则清楚key 否则不做处理
timekey.put(key, null);
entries.remove();
System.out.println("Key:"+key+" 已过期  清空");
}
}
}
}, START,INTERVAL);//从0秒开始,每隔10秒执行一次
}
}


直接调用 put 存值 get 取值 简单方便
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: