使用 ConcurrentHashMap的缓存设计,实现基于本地程序内部的小巧的缓存工具类,具备缓存时效核查,缓存时效删除等功能。设计思路,系统设置两个ConcurrentHashMap变量,一个用来存放我们的value值,一个用来存放vlaue对于的缓存有效时间。系统通过TimerTask定时器,核查是否有过期的key,若过期从缓存中清除。代码如下
package com.zhegui.utils.cache;
import java.util.Map;
import java.util.Set;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.ConcurrentHashMap;
/**
* 基于ConcurrentHashMap的缓存工具类
* 主要目的: 模拟内存缓存
* @author Zhegui
*
*/
public class ConcurrentHashMapCache {
private ConcurrentHashMapCache(){}
private static class InnerHolder{
private static ConcurrentHashMapCache instance = new ConcurrentHashMapCache();
static{
CACHE_VALUE = new ConcurrentHashMap<>();
CACHE_TIME = new ConcurrentHashMap<>();
cacheTimer();
}
/**
* 设定一个定时器
*/
private static void cacheTimer(){
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
System.out.println("start chedule....");
for (String key : CACHE_TIME.keySet()) {
Long mapLong = CACHE_TIME.get(key);
if(mapLong !=null && mapLong < System.cur