java - 可调信号量

标签 java multithreading semaphore

是否有 Java 信号量的生产级实现,可以在创建信号量后调整许可数量?

最佳答案

我不能完全给你“现有的生产级”,但我可以给你“现有的源代码”,为现有的生产级实现提供一个薄包装。怎么样?

本质上,您可以扩展 Java 的 Semaphore 类来实现您想要的。所以,你站在巨人的肩膀上。

  1. 要将许可证数量增加 X 倍,请调用 Semaphore.release(X)
  2. 要减少许可数量,请调用protected方法 Semaphore.reducePermits(X) .

第 2 项( protected 方法)解释了为什么您需要扩展 Semaphore 类。

有关完整的实现和更好的解释,请参阅此博客条目:

https://web.archive.org/web/20190213082551/http://blog.teamlazerbeez.com/2009/04/20/javas-semaphore-resizing/

关于java - 可调信号量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11610270/

相关文章:

mysql - 管理逻辑约束以处理 mySQL 数据库插入中的并发性

java - 为什么在单线程、双线程和三线程程序中运行 ExecutorService 需要相同的时间?

JAVA Graph/DFS实现

c# - 有条件地在线程中使用锁?

c++ - 在这种情况下如何正确使用互斥锁

c# - SemaphoreSlim(1) 如何知道是否有其他线程在等待

java - Android:将 compileSdkVersion 设置为低于最新 api 的版本是否有优势?

java - Java函数在返回参数时会复制参数传递的数组吗?

c++ - CreateMutex 永远不会返回 ERROR_ALREADY_EXISTS

java - 从 ActionPerformed 调用方法并在主线程上运行它