在Java中增加信号量许可证

问题描述:

我可以在Java中为信号量添加更多许可证吗?在Java中增加信号量许可证

Semaphore s = new Semaphore(3); 

之后在代码中的某处我想将许可证更改为4.这可能吗?

是的。该release方法(IMO容易混淆的名字命名)可用于递增许可证以来,从文档:

There is no requirement that a thread that releases a permit must 
have acquired that permit by calling acquire. 
Correct usage of a semaphore is established by programming convention 
in the application. 

换句话说:

semaphore.release(10); 

将增加10多个许可证,如果线程调用具有不获得任何。

+0

thx高手!有用! – KilyenOrs 2012-03-20 15:00:12

+0

+1不错的观察。但是,这是具体的执行权?没有要求Semaphore增量超过构造函数中定义的最大值,也就是说,在稍后的版本中,实现可以更改,删除此功能 – 2012-03-20 15:01:13

+3

@JohnVint - 它不是构造函数中的最大参数。 '可用的许可证的最初数量。这个值可能是负值,在这种情况下,发布必须发生在任何获得授予之前。“负的最大值会有点傻.. – Ishtar 2012-03-20 15:08:18