in src/main/java/org/apache/geronimo/jcache/simple/SimpleCache.java [812:855]
public void run() {
while (!isClosed()) {
try {
Thread.sleep(pause);
} catch (final InterruptedException e) {
Thread.currentThread().interrupt();
break;
}
if (delegate.isEmpty()) {
continue;
}
try {
final List<SimpleKey<K>> keys = new ArrayList<>(delegate.keySet());
Collections.sort(keys, new Comparator<SimpleKey<K>>() {
@Override
public int compare(final SimpleKey<K> o1, final SimpleKey<K> o2) {
final long l = o1.lastAccess() - o2.lastAccess();
if (l == 0) {
return keys.indexOf(o1) - keys.indexOf(o2);
}
return (int) l;
}
});
int delete = 0;
for (final SimpleKey<K> key : keys) {
final SimpleElement<V> elt = delegate.get(key);
if (elt != null && elt.isExpired()) {
delegate.remove(key);
statistics.increaseEvictions(1);
onExpired(key, elt);
delete++;
if (delete >= maxDelete) {
break;
}
}
}
} catch (final Exception e) {
// no-op
}
}
}