一、漏桶算法
1、原理
漏桶算法的原理可以这么理解,就是有一个容量有限的桶,每个请求想象成滴入桶中的一滴水,但是这个桶中的水是以恒定的速率从桶的底部流出,假如说每秒钟只流出一滴水,但是每秒钟滴入10滴水,所以当请求过多,超过桶容量的限制时,则直接溢出,抛弃请求
2.代码实现思路
1)代码实现可以这么理解,有一个固定容量的ArrayBlockingQueue,每次请求过来时,也就是向这个桶中,放入当前线程,当ArrayBlockingQueue满的时候,则直接拒绝再向queue中放入请求,另外有一个循环以固定的速率从queue中读取数据,当读取到的线程与当前线程相等时,这时会释放该请求,令其继续执行,否则直到等到当前线程从桶中移出时,这种方式有可能会导致后面进入的请求,等待很长时间2)对于等待时间过长问题,可以预估当前线程需要等待多长时间,如果等待时间超过出入的超时时间,直接reutrn false,否则继续等待,直到从桶中取出当前线程,接着return true
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。