From 32987812c09184d33f96cd8816f1fe8be088063e Mon Sep 17 00:00:00 2001 From: liklik <1178981326@qq.com> Date: Thu, 30 Sep 2021 09:58:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=AA=E8=AE=BE=E7=BD=AE=E8=BF=87=E6=9C=9F?= =?UTF-8?q?=E7=AD=96=E7=95=A5=E6=97=B6=EF=BC=8C=E6=97=A0=E9=9C=80=E9=81=8D?= =?UTF-8?q?=E5=8E=86=E5=88=A4=E6=96=AD=E8=BF=87=E6=9C=9F=E5=AF=B9=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/hutool/cache/impl/FIFOCache.java | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) 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; } // 清理结束后依旧是满的,则删除第一个被缓存的对象