直接上代码
package com.gcb.XX.util;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public final class ConcurrentHashUtil {
//预缓存信息
private static final Map<String,Object> CACHE_MAP = New ConcurrentHashMap<String,Object>();
//每个缓存生效十分钟
private static final Long CACHE_HOLD_TIME = 10 * 60 * 1000L;
//将key-value存入缓存
public static void put(String cachName,Object str) {
put(cachName,str,CACHE_HOLD_TIME);
}
private static void put(String cachName,Object str,Long cachHoldTime) {
CACHE_MAP.put(cachName,str);
CACHE_MAP.put(cachName + "_HOLDTime",system.currentTimeMillis());
}
//根据对应的key获取value
public static Object get(String cachName) {
//先检查是否存在该字段
if(checkcheName(cachName)) {
return CACHE_MAP(cachName);
}
return null;
}
//检查缓存对象是否存在,如果不存在,返回false,如果存在,判断是否在有效期内,
//如果过了期限则返回false,并删除该缓存
private static boolean checkcheName(String cacheName) {
// TODO Auto-generated method stub
//获取缓存对象有效期
Long cacheHoldTime = (Long) CACHE_MAP.get(cacheName + "_HoldTime");
//判断是否存在有效期
if(cacheHoldTime == null || cacheHoldTime == 0L) {
return false;
}
//判断是否在有效期内
if(cacheHoldTime < System.currentTimeMillis()) {
remove(cacheName);
return false;
}
return true;
}
//删除指定缓存对象
private static void remove(String cacheName) {
CACHE_MAP.remove(cacheName);
CACHE_MAP.remove(cacheName + "_HoldTime");
// TODO Auto-generated method stub
}
}