mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-04-19 03:01:48 +08:00
$ bin/commit.sh Cache.put变更策略,对于替换的键值对,不清理队列
This commit is contained in:
parent
3d3a1d90ca
commit
c2641bf97b
@ -96,10 +96,19 @@ public abstract class AbstractCache<K, V> implements Cache<K, V> {
|
||||
if (timeout != 0) {
|
||||
existCustomTimeout = true;
|
||||
}
|
||||
if (isFull()) {
|
||||
pruneCache();
|
||||
|
||||
final MutableObj<K> mKey = MutableObj.of(key);
|
||||
|
||||
// issue#3618 对于替换的键值对,不做满队列检查和清除
|
||||
if (cacheMap.containsKey(mKey)) {
|
||||
// 存在相同key,覆盖之
|
||||
cacheMap.put(mKey, co);
|
||||
} else {
|
||||
if (isFull()) {
|
||||
pruneCache();
|
||||
}
|
||||
cacheMap.put(mKey, co);
|
||||
}
|
||||
cacheMap.put(MutableObj.of(key), co);
|
||||
}
|
||||
// ---------------------------------------------------------------- put end
|
||||
|
||||
|
23
hutool-core/src/test/java/org/dromara/hutool/core/cache/Issue3618Test.java
vendored
Normal file
23
hutool-core/src/test/java/org/dromara/hutool/core/cache/Issue3618Test.java
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
package org.dromara.hutool.core.cache;
|
||||
|
||||
import org.dromara.hutool.core.cache.impl.FIFOCache;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
public class Issue3618Test {
|
||||
@Test
|
||||
public void putTest() {
|
||||
final FIFOCache<Object, Object> cache = CacheUtil.newFIFOCache(3);
|
||||
cache.put(1, 1);
|
||||
cache.put(2, 1);
|
||||
cache.put(3, 1);
|
||||
|
||||
assertEquals(3, cache.size());
|
||||
|
||||
// issue#3618 对于替换的键值对,不做满队列检查和清除
|
||||
cache.put(3, 2);
|
||||
|
||||
assertEquals(3, cache.size());
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user