.
, (.. , - ), PassiveExpiringMap Apache Commons - . (TTL) ( TTL), , null. , , , TTL, , .
(, / ), Google Guava CacheBuilder . , Apache Commons, . , .
, , . , , , . , , . , , , ( ), ( - ), .
, , , TTL . ExpiringKey, ( TTL, TTL, Map decorator Map):
public class ExpiringKey<T> {
private final T key;
private final long expirationTimestamp;
public ExpiringKey(T key, long ttlInMillis) {
this.key = key;
expirationTimestamp = System.currentTimeMillis() + ttlInMillis;
}
public T getKey() {
return key;
}
public boolean isExpired() {
return System.currentTimeMillis() > expirationTimestamp;
}
}
Map<ExpiringKey<K>, V> K V. Runnable, :
public class ExpiredKeyRemover implements Runnable {
private final Map<ExpiringKey<?>, ?> map;
public ExpiredKeyRemover(Map<ExpiringKey<?>, ?> map) {
this.map = map;
}
@Override
public void run() {
Iterator<ExpiringKey<?>> it = map.keySet().iterator();
while (it.hasNext()) {
if (it.next().isExpired()) {
it.remove();
}
}
}
}
Runnable , ScheduledExecutorService ( 5 ):
Map<ExpiringKey<K>, V> myMap =
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
executor.scheduleAtFixedRate(new ExpiredKeyRemover(myMap), 0, 5, TimeUnit.SECONDS);
, Map, myMap, . Map , ExpiredKeyRemover , , , , ( / , , , ). , , , .
, .