![JAR search and dependency download from the Maven repository](/logo.png)
com.yuxuan66.core.utils.CacheManager Maven / Gradle / Ivy
package com.yuxuan66.core.utils;
import java.util.Date;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* 缓存管理器
*
* @author Sir丶雨轩
* @time 2018年1月12日
*
*/
public class CacheManager {
@SuppressWarnings("rawtypes")
private static Map CACHE_DATA = new ConcurrentHashMap();
public static T getData(String key, Load load, int expire) {
T data = getData(key);
if (data == null && load != null) {
data = load.load();
if (data != null) {
setData(key, data, expire);
}
}
return data;
}
@SuppressWarnings("unchecked")
public static T getData(String key) {
CacheData data = CACHE_DATA.get(key);
if (data != null && (data.getExpire() <= 0 || data.getSaveTime() >= new Date().getTime())) {
return data.getData();
}
return null;
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public static void setData(String key, T data, int expire) {
CACHE_DATA.put(key, new CacheData(data, expire));
}
public static void clear(String key) {
CACHE_DATA.remove(key);
}
public static void clearAll() {
CACHE_DATA.clear();
}
public interface Load {
T load();
}
private static class CacheData {
CacheData(T t, int expire) {
this.data = t;
this.expire = expire <= 0 ? 0 : expire * 1000;
this.saveTime = new Date().getTime() + expire;
}
private T data;
private long saveTime; // 存活时间
private long expire; // 过期时间 小于等于0标识永久存活
public T getData() {
return data;
}
public long getExpire() {
return expire;
}
public long getSaveTime() {
return saveTime;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy