【问题标题】:Leaky bucket-like rate rate limiting using Java Semaphore class使用 Java Semaphore 类的漏桶式速率限制
【发布时间】:2013-02-27 02:43:14
【问题描述】:

我正在考虑使用Java Semaphore 类实现与leaky bucket algorithm 非常相似的东西,并且想知道它是否适合。目标是限制对共享资源的写入速率,我将有一个线程定期向信号量释放一些许可,并且一组工作线程试图获取与他们想要的项目大小一样多的许可写。

我关心的是 Semaphore 是否在幕后使用单个 int 实现,或者它的空间使用是否与活动许可的数量成线性关系(使用某种许可队列等实现。)如果空间(因此时间)是线性的,那么我显然想避免谈论以字节为单位的速率。如果它只是一个int,除了非常高的费率溢出之外我应该没有这样的担忧(在这种情况下,我想要一个long-支持Semaphore

有人有什么想法吗?

【问题讨论】:

标签: java semaphore throttling


【解决方案1】:

来自http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Semaphore.html

没有使用实际的许可对象; Semaphore 只是对可用数量进行计数并采取相应措施。

我检查了源代码,它确实由int(不是long)支持。

【讨论】:

  • 没有注意到这一点我觉得很傻。谢谢!现在如果我能得到一个long-backed 一个:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-16
  • 2015-12-17
  • 2019-12-25
  • 1970-01-01
  • 2017-10-03
相关资源
最近更新 更多