!425 FIFOCache未设置过期策略时,无需遍历判断过期对象

Merge pull request !425 from liklik/v5-dev
This commit is contained in:
Looly
2021-09-30 09:14:16 +00:00
committed by Gitee

View File

@@ -51,17 +51,22 @@ public class FIFOCache<K, V> extends AbstractCache<K, V> {
// 清理过期对象并找出链表头部元素(先入元素) // 清理过期对象并找出链表头部元素(先入元素)
Iterator<CacheObj<K, V>> values = cacheMap.values().iterator(); Iterator<CacheObj<K, V>> values = cacheMap.values().iterator();
while (values.hasNext()) { if (isPruneExpiredActive()) {
CacheObj<K, V> co = values.next(); // 清理过期对象并找出链表头部元素(先入元素)
if (co.isExpired()) { while (values.hasNext()) {
values.remove(); CacheObj<K, V> co = values.next();
onRemove(co.key, co.obj); if (co.isExpired()) {
count++; values.remove();
continue; onRemove(co.key, co.obj);
} count++;
if (first == null) { continue;
first = co; }
if (first == null) {
first = co;
}
} }
} else {
first = values.hasNext() ? values.next() : null;
} }
// 清理结束后依旧是满的,则删除第一个被缓存的对象 // 清理结束后依旧是满的,则删除第一个被缓存的对象