package com.zwb.test.timeCache;
import java.util.HashMap;
import java.util.Timer;
import java.util.TimerTask;
public class Test
{
/**
* key:phone_num手机号,value:message手机短信验证码
*/
private HashMap messageMap = new HashMap();
/**
* 定时缓存
* @param phoneNum
* @param message
*/
private void timerCache(String phoneNum, String message)
{
messageMap.put(phoneNum, message);
Timer timer = new Timer();
//60秒后执行任务TimerDeleteTask
timer.schedule(new TimerDeleteTask(phoneNum, timer), 60000);
}
/**
* 定义一个任务,60秒后删除map中对应的key-value值
* @author zhengwb
*
*/
class TimerDeleteTask extends TimerTask
{
private String phoneNum;
private Timer timer;
public TimerDeleteTask(String phoneNum, Timer timer)
{
this.phoneNum = phoneNum;
this.timer = timer;
}
@Override
public void run()
{
messageMap.remove(phoneNum);
timer.cancel();
if (null != timer)
{
timer = null;
}
}
}
/**
* @param args
*/
public static void main(String[] args)
{
Test test = new Test();
String phoneNum = "13111111111";
String message = "123456";
test.timerCache(phoneNum, message);
System.out.println(test.messageMap.get(phoneNum));
try
{
//延时30秒
Thread.currentThread().sleep(30000);
System.out.println("30秒后...");
if (test.messageMap.containsKey(phoneNum))
{
System.out.println(test.messageMap.get(phoneNum));
}
//延时40秒
Thread.currentThread().sleep(40000);
System.out.println("40秒后...");
if (!test.messageMap.containsKey(phoneNum))
{
System.out.println("data delete success");
}
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
执行结果:
123456
30秒后...
123456
40秒后...
data delete success