每秒限制方法调用(达到限制时拒绝)

And*_*ois 5 java thread-safety java-io

我有一个执行一些 IO 的方法,我想限制对这个方法的调用(每秒),以避免后端获得它无法处理的并发请求的爆发。

如果要求没有“每秒”,我可以只使用一个堆栈(基本上只是一个计数器)并offer()在开始请求时和poll()完成时使用。对于“每秒”要求,我需要以某种方式清除堆栈上比给定时间流逝更旧的插槽。

我该如何正确地做到这一点?显然,该结构应该是线程安全的。

感谢您的时间!

ska*_*man 4

看看这个问题。答案同样适用于这个问题,即使问题的措辞相当不同。

我承认,我觉得它有点神秘,但效果很好。