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 取值 简单方便
相关文章推荐
- java 读取图片转成
- spring自定义标签
- Spring hibernate 声明式事务配置
- jdk与cglib的动态代理
- java 利用SMB读取远程文件
- Java中的Process类
- java中for和foreach的用法
- 来段代码提提神-Java实现文件压缩
- springmvc如何拦截上传文件最大限制异常
- Spring MVC 异常处理优解
- Java中的equals学习小结
- Java类加载与初始化机制实例分析
- JAVA程序元素在内存中的分配
- java反射机制方法的获取与调用
- java的一些发展前景!
- JHipster简介
- java的一些学习方案!
- java 学习资料
- Java核心知识点-Java多线程
- Spring4 版 eventbus 事件通信 事件驱动 介绍