0

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

4

1 回答 1

3

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

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

  1. 要将许可数量增加 X 次,请调用Semaphore.release(X)
  2. 要减少许可数量,请调用受保护的方法Semaphore.reducePermits(X)

第 2 项,受保护的方法,解释了为什么需要扩展Semaphore 类。

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

http://blog.teamlazerbeez.com/2009/04/20/javas-semaphore-resizing/

于 2012-07-23T10:42:54.903 回答