使用Java信号量类的漏桶式速率限制

使用Java信号量类的漏桶式速率限制,java,semaphore,throttling,Java,Semaphore,Throttling,我正在考虑使用JavaSemaphore类实现一些类似于Java的东西,我想知道它是否适合。目标是限制对共享资源的写入速率,我将让一个线程定期向信号量释放多个许可,并让一个工作线程池尝试获取与其想要写入的项目大小相同的许可 我关心的是,信号量是否在幕后使用单个int实现,或者它的空间使用量在活动许可数量上是否是线性的(使用某种许可队列之类的方式实现)。如果空间(以及时间)是线性的,那么我显然希望避免谈论以字节为单位的速率。如果它只是一个int,我就不必担心这个问题了,只需要为非常高的速率溢出(在

我正在考虑使用Java
Semaphore
类实现一些类似于Java的东西,我想知道它是否适合。目标是限制对共享资源的写入速率,我将让一个线程定期向信号量释放多个许可,并让一个工作线程池尝试获取与其想要写入的项目大小相同的许可

我关心的是,
信号量
是否在幕后使用单个
int
实现,或者它的空间使用量在活动许可数量上是否是线性的(使用某种许可队列之类的方式实现)。如果空间(以及时间)是线性的,那么我显然希望避免谈论以字节为单位的速率。如果它只是一个
int
,我就不必担心这个问题了,只需要为非常高的速率溢出(在这种情况下,我需要一个
长的
支持的
信号量

有人有什么想法吗?

来自:

没有使用实际的许可证对象;信号量只保留可用数量的计数,并相应地进行操作


我检查了源代码,它确实有一个
int
(不是
long
)作为支持。

我觉得没有注意到这一点很傻。谢谢现在我要是能得到一个
长的
支持的:)结帐就好了