1. 程式人生 > >Guava併發:RateLimiter限制資源的併發訪問執行緒數

Guava併發:RateLimiter限制資源的併發訪問執行緒數

RateLimiter類似於JDK的訊號量Semphore,他用來限制對資源併發訪問的執行緒數。

RateLimiter limiter = RateLimiter.create(4.0); //每秒不超過4個任務被提交
limiter.acquire();  //請求RateLimiter, 超過permits會被阻塞
executor.submit(runnable); //提交任務

也可以以非阻塞的形式來使用:

If(limiter.tryAcquire()){ //未請求到limiter則立即返回false
    doSomething();
}else{
    doSomethingElse();
}