本文主要是介绍Guava的RateLimiter限流,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
引用
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
简单demo
public class RateLimiterTest {@Testpublic void test1() {RateLimiter limiter = RateLimiter.create(2.0); //每秒不超过2个任务被提交for(int i=0;i<12;i++){limiter.acquire();//请求RateLimiter, 超过permits会被阻塞System.out.println(System.currentTimeMillis());//500ms}}@Testpublic void test2() throws Exception{RateLimiter limiter = RateLimiter.create(4.0);for(int i=0;i<10;i++){Thread.sleep(100);if(limiter.tryAcquire()){ //未请求到limiter则立即返回falseSystem.out.println("doSomething()");}else{System.out.println("doSomethingElse()");}}}}
RateLimiter 是线程安全的
这篇关于Guava的RateLimiter限流的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!