社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
@Slf4j
public class JDKLimiter {
public static void main(String[] args) {
Semaphore semaphore = new Semaphore(2);
for (int i = 0; i < 10; i++) {
new Thread(() -> {
semaphore.acquireUninterruptibly();
log.debug("do something");
}).start();
}
}
}
@Slf4j
public class GuavaLimiter {
public static void main(String[] args) {
RateLimiter limiter = RateLimiter.create(2.0);
for (int i = 0; i < 10; i++) {
new Thread(() -> {
limiter.acquire();
log.debug("do something");
}).start();
}
}
}
@Slf4j
public class RedisLimiter {
public static void main(String[] args) {
Config config = new Config();
config.useSingleServer().setAddress("redis://xxx.xxx.xxx.xxx:6379").setPassword("******").setDatabase(0);
RedissonClient client = Redisson.create(config);
RRateLimiter limiter = client.getRateLimiter("req_limiter");
limiter.trySetRate(RateType.OVERALL, 2, 1, RateIntervalUnit.SECONDS);
for (int i = 0; i < 10; i++) {
new Thread(() -> {
limiter.acquire();
log.debug("do something");
}).start();
}
}
}
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!