赞
踩
ratelimiter是基于令牌桶算法来做的
guava的RateLimiter使用的是令牌桶算法,也就是以固定的频率向桶中放入令牌,例如一秒钟10枚令牌,实际业务在每次响应请求之前都从桶中获取令牌,只有取到令牌的请求才会被成功响应,获取的方式有两种:阻塞等待令牌或者取不到立即返回失败
令牌桶代码:
create():每秒创建多少令牌
tryacquire():尝试获取令牌,tryacquire():尝试获取一个令牌,如果获取不到立即返回;tryacquire(int permits, long timeout, TimeUnit unit):尝试获取permits个令牌,如果获取不到等待timeout时间
public static void main(String[] args) {
RateLimiter rateLimiter = RateLimiter.create(1);
while (true){
rateLimiter.acquire();
System.out.println("heiha");
}
}
pom文件引入guava依赖:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。