diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/thread/ratelimiter/SemaphoreRateLimiter.java b/hutool-core/src/main/java/org/dromara/hutool/core/thread/ratelimiter/SemaphoreRateLimiter.java index e3382a114..64558ea26 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/thread/ratelimiter/SemaphoreRateLimiter.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/thread/ratelimiter/SemaphoreRateLimiter.java @@ -24,8 +24,16 @@ import java.util.concurrent.*; /** * 基于{@link Semaphore} 实现的限流器
+ * 此算法实现了:固定窗口(Fixed Window)计数法,即设置固定窗口
+ * 窗口时间为{@link RateLimiterConfig#getLimitRefreshPeriod()},每次窗口内请求数不超过{@link RateLimiterConfig#getLimitForPeriod()}
+ * 在窗口期允许的请求数是固定的,请求结束后拒绝访问,直到下一个窗口开始则重新开始计数。
* 参考:https://github.com/TFdream/juice/blob/master/juice-ratelimiter/src/main/java/juice/ratelimiter/internal/SemaphoreBasedRateLimiter.java * + * + * * @author Ricky Fung * @since 6.0.0 */ @@ -47,8 +55,8 @@ public class SemaphoreRateLimiter implements RateLimiter { /** * 构造 * - * @param config 限流配置 - * @param semaphore {@link Semaphore} + * @param config 限流配置 + * @param semaphore {@link Semaphore} */ public SemaphoreRateLimiter(final RateLimiterConfig config, final Semaphore semaphore) { this(config, semaphore, null); @@ -57,9 +65,9 @@ public class SemaphoreRateLimiter implements RateLimiter { /** * 构造 * - * @param config 限流配置 - * @param semaphore {@link Semaphore} - * @param scheduler 定时器 + * @param config 限流配置 + * @param semaphore {@link Semaphore} + * @param scheduler 定时器 */ public SemaphoreRateLimiter(final RateLimiterConfig config, final Semaphore semaphore, final ScheduledExecutorService scheduler) { this.config = Assert.notNull(config);