我一直想知道为什么SmoothRateLimiter的Guava实现必须同步(获取)。
这意味着,如果我有数十或数百个RateLimiters,则必须有数十或数百个锁定线程,这似乎不理想。
理想情况下,我们可以有类似的东西
for (Config configsPerRatelimiter: configsPerRatelimiters){
new RateLimiter(configsPerRatelimiter, sharedScheduler, sharedExecutor).submit(myTask)
}
那时的调度程序(单线程)和执行程序(线程池)可以在所有RateLimiter之间共享。
我找不到任何在线实现都可以很好地解决这一问题,而不会受到阻碍。