diff --git a/hutool-core/src/main/java/cn/hutool/v7/core/cache/impl/SieveCache.java b/hutool-core/src/main/java/cn/hutool/v7/core/cache/impl/SieveCache.java index 2516be268..8c0c1fcd2 100644 --- a/hutool-core/src/main/java/cn/hutool/v7/core/cache/impl/SieveCache.java +++ b/hutool-core/src/main/java/cn/hutool/v7/core/cache/impl/SieveCache.java @@ -33,6 +33,7 @@ import java.util.concurrent.locks.ReentrantLock; * 淘汰时,使用 {@code hand} 指针从尾部扫描,淘汰 {@code visited=false} 的节点。
* 新加入节点 {@code visited = false} 且置于头部,Hand 指针扫描时会优先淘汰它,提供抗扫描能力。
*

+ * 来自:pr#4157@Github * * @param 键类型 * @param 值类型 @@ -61,7 +62,7 @@ public class SieveCache extends LockedCache { * * @param capacity 容量 */ - public SieveCache(int capacity) { + public SieveCache(final int capacity) { this(capacity, 0); } @@ -71,7 +72,7 @@ public class SieveCache extends LockedCache { * @param capacity 容量 * @param timeout 默认超时时间,单位:毫秒 */ - public SieveCache(int capacity, long timeout) { + public SieveCache(int capacity, final long timeout) { if (Integer.MAX_VALUE == capacity) { capacity -= 1; } @@ -85,7 +86,7 @@ public class SieveCache extends LockedCache { } @Override - protected void putWithoutLock(K key, V object, long timeout) { + protected void putWithoutLock(final K key, final V object, final long timeout) { final Mutable keyObj = MutableObj.of(key); SieveCacheObj co = (SieveCacheObj) cacheMap.get(keyObj); @@ -116,7 +117,7 @@ public class SieveCache extends LockedCache { * @param oldNode 旧节点 * @param newNode 新节点 */ - private void replaceNode(SieveCacheObj oldNode, SieveCacheObj newNode) { + private void replaceNode(final SieveCacheObj oldNode, final SieveCacheObj newNode) { newNode.prev = oldNode.prev; newNode.next = oldNode.next; @@ -144,7 +145,7 @@ public class SieveCache extends LockedCache { } @Override - protected CacheObj getOrRemoveExpiredWithoutLock(K key) { + protected CacheObj getOrRemoveExpiredWithoutLock(final K key) { final Mutable keyObj = MutableObj.of(key); final SieveCacheObj co = (SieveCacheObj) cacheMap.get(keyObj); @@ -160,7 +161,7 @@ public class SieveCache extends LockedCache { } @Override - protected CacheObj removeWithoutLock(K key) { + protected CacheObj removeWithoutLock(final K key) { final Mutable keyObj = MutableObj.of(key); final SieveCacheObj co = (SieveCacheObj) cacheMap.remove(keyObj); if (co != null) { @@ -223,7 +224,7 @@ public class SieveCache extends LockedCache { * * @param node 节点 */ - private void addToHead(SieveCacheObj node) { + private void addToHead(final SieveCacheObj node) { node.next = head; node.prev = null; if (head != null) { @@ -240,7 +241,7 @@ public class SieveCache extends LockedCache { * * @param node 节点 */ - private void removeNode(SieveCacheObj node) { + private void removeNode(final SieveCacheObj node) { if (node == hand) { hand = node.prev; } diff --git a/hutool-core/src/test/java/cn/hutool/v7/core/cache/SieveCacheTest.java b/hutool-core/src/test/java/cn/hutool/v7/core/cache/SieveCacheTest.java index 019ff315f..7194d7dbc 100644 --- a/hutool-core/src/test/java/cn/hutool/v7/core/cache/SieveCacheTest.java +++ b/hutool-core/src/test/java/cn/hutool/v7/core/cache/SieveCacheTest.java @@ -32,7 +32,7 @@ public class SieveCacheTest { @Test public void evictionLogicTest() { - SieveCache cache = new SieveCache<>(3); + final SieveCache cache = new SieveCache<>(3); cache.put("A", "A"); cache.put("B", "B"); @@ -52,7 +52,7 @@ public class SieveCacheTest { @Test public void expiryTest() { - SieveCache cache = new SieveCache<>(3); + final SieveCache cache = new SieveCache<>(3); cache.put("k1", "v1", 100); cache.put("k2", "v2", 10000); @@ -66,7 +66,7 @@ public class SieveCacheTest { @Test public void listenerTest() { final AtomicInteger removeCount = new AtomicInteger(); - SieveCache cache = new SieveCache<>(2); + final SieveCache cache = new SieveCache<>(2); cache.setListener((key, value) -> { removeCount.incrementAndGet(); @@ -81,9 +81,9 @@ public class SieveCacheTest { @Test public void concurrencyPressureTest() throws InterruptedException { - int threadCount = 20; - int loopCount = 2000; - int capacity = 100; + final int threadCount = 20; + final int loopCount = 2000; + final int capacity = 100; final SieveCache cache = new SieveCache<>(capacity); final CountDownLatch latch = new CountDownLatch(threadCount); @@ -93,14 +93,14 @@ public class SieveCacheTest { new Thread(() -> { try { for (int j = 0; j < loopCount; j++) { - String key = String.valueOf(RandomUtil.randomInt(0, 1000)); + final String key = String.valueOf(RandomUtil.randomInt(0, 1000)); if (RandomUtil.randomBoolean()) { cache.put(key, "val-" + key); } else { cache.get(key); } } - } catch (Exception e) { + } catch (final Exception e) { errorCount.incrementAndGet(); } finally { latch.countDown(); @@ -114,7 +114,7 @@ public class SieveCacheTest { Assertions.assertTrue(cache.size() <= capacity, "缓存大小不应超过容量"); int iteratorCount = 0; - for (String ignored : cache) { + for (final String ignored : cache) { iteratorCount++; } Assertions.assertEquals(cache.size(), iteratorCount, "迭代器数量与 size() 应一致"); @@ -126,8 +126,8 @@ public class SieveCacheTest { */ @Test public void scanResistanceTest() { - int capacity = 10; - SieveCache cache = new SieveCache<>(capacity); + final int capacity = 10; + final SieveCache cache = new SieveCache<>(capacity); // 填满热点数据 for (int i = 0; i < capacity; i++) {