
club.zhcs.utils.CacheMap Maven / Gradle / Ivy
package club.zhcs.utils;
import java.util.AbstractMap;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import org.nutz.log.Log;
import org.nutz.log.Logs;
/**
* @author Kerbores([email protected])
*/
public class CacheMap extends AbstractMap {
private class CacheEntry implements Entry {
K key;
long time;
V value;
CacheEntry(K key, V value) {
super();
this.value = value;
this.key = key;
this.time = System.currentTimeMillis();
}
@Override
public K getKey() {
return key;
}
@Override
public V getValue() {
return value;
}
@Override
public V setValue(V value) {
this.value = value;
return value;
}
}
private class ClearThread extends Thread {
ClearThread() {
setName("clear cache thread");
}
@Override
public void run() {
while (true) {
try {
long now = System.currentTimeMillis();
Object[] keys = map.keySet().toArray();
for (Object key : keys) {
CacheEntry entry = map.get(key);
if (now - entry.time >= cacheTimeout) {
synchronized (map) {
map.remove(key);
}
}
}
Thread.sleep(cacheTimeout);
}
catch (Exception e) {
log.error(e);
}
}
}
}
private static final long DEFAULT_TIMEOUT = 30000;
private static CacheMap
© 2015 - 2025 Weber Informatics LLC | Privacy Policy