From d323376bedc12d889d02aee64f732ed04181342e Mon Sep 17 00:00:00 2001 From: yukaidi Date: Fri, 29 May 2026 02:25:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DRateLimiter=20count++?= =?UTF-8?q?=E9=9D=9E=E5=8E=9F=E5=AD=90=E6=93=8D=E4=BD=9C=EF=BC=9A=E5=B0=86?= =?UTF-8?q?volatile=20int=E6=94=B9=E4=B8=BAAtomicInteger=EF=BC=8C=E4=BD=BF?= =?UTF-8?q?=E7=94=A8incrementAndGet()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/qaiu/lz/common/interceptorImpl/RateLimiter.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/web-service/src/main/java/cn/qaiu/lz/common/interceptorImpl/RateLimiter.java b/web-service/src/main/java/cn/qaiu/lz/common/interceptorImpl/RateLimiter.java index 0330d6f..fa3937e 100644 --- a/web-service/src/main/java/cn/qaiu/lz/common/interceptorImpl/RateLimiter.java +++ b/web-service/src/main/java/cn/qaiu/lz/common/interceptorImpl/RateLimiter.java @@ -10,6 +10,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicInteger; @Slf4j public class RateLimiter { @@ -51,12 +52,12 @@ public class RateLimiter { return new RequestInfo(1, currentTime); } else { // 增加计数器 - requestInfo.count++; + requestInfo.count.incrementAndGet(); return requestInfo; } }); - if (info.count > MAX_REQUESTS) { + if (info.count.get() > MAX_REQUESTS) { // 超过限制 // 计算剩余时间 long remainingTime = TIME_WINDOW - (System.currentTimeMillis() - info.timestamp); @@ -71,11 +72,11 @@ public class RateLimiter { } private static class RequestInfo { - volatile int count; + final AtomicInteger count; volatile long timestamp; RequestInfo(int count, long time) { - this.count = count; + this.count = new AtomicInteger(count); this.timestamp = time; } }