java Map定时过期类

来源:互联网 发布:php面试题大全 编辑:程序博客网 时间:2024/06/14 00:05
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(); //获取valuelong rt = nd - value;//获取当前时间跟存入时间的差值if(rt>EXPIRATIONTIME){//判断时间是否已经过期  如果过期则清楚key 否则不做处理    timekey.put(key, null);    entries.remove();    System.out.println("Key:"+key+" 已过期  清空");    }}}  }, START,INTERVAL);//从0秒开始,每隔10秒执行一次}}

直接调用 put  存值  get 取值  简单方便
0 0
原创粉丝点击