mirror of
https://gitee.com/dromara/hutool.git
synced 2025-04-05 17:37:59 +08:00
未设置过期策略时,无需遍历判断过期对象
This commit is contained in:
parent
58355265ff
commit
32987812c0
@ -51,17 +51,22 @@ public class FIFOCache<K, V> extends AbstractCache<K, V> {
|
||||
|
||||
// 清理过期对象并找出链表头部元素(先入元素)
|
||||
Iterator<CacheObj<K, V>> values = cacheMap.values().iterator();
|
||||
while (values.hasNext()) {
|
||||
CacheObj<K, V> 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<K, V> 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;
|
||||
}
|
||||
|
||||
// 清理结束后依旧是满的,则删除第一个被缓存的对象
|
||||
|
Loading…
Reference in New Issue
Block a user