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