当前位置:   article > 正文

rateLimiter使用_ratelimiter tryacquire

ratelimiter tryacquire

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");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

pom文件引入guava依赖:

<dependency>
	<groupId>com.google.guava</groupId>
	<artifactId>guava</artifactId>
	<version>18.0</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号