创建
```java
double batchDataRate = 20 //每秒可获取的许可数,及可操作数
RateLimiter batchRateLimiter = RateLimiter.create(batchSlowDataRate)
```java概念
1. RateLimiter 速率限制器,会在可配置的速率下分配许可证。如果必要的话,每个acquire() 会阻塞当前线程直到许可证可用后获取该许可证。一旦获取到许可证,不需要再释放许可证。
2. RateLimiter使用的是一种叫令牌桶的流控算法,RateLimiter会按照一定的频率往桶里扔令牌。 acquire() 与 acquire(size)
1. acquire()是针对每一条任务来获取许可的,每秒可获取的许可数取决于创建时给定数量。(通过控制每秒任务条数来达到限速)
2. acquire(size)是针对于某一类任务来获取,即这批任务每秒内获取size个许可来干活。(通过限制每秒任务速率来达到限速)项目中实际使用
我的需求是将大批量的任务放缓速度来执行,从而达到短时间内对DB的压力
前提是可以接受短时间的延迟