java - 什么时候 Semaphore.availablePermits() 可以返回比构造函数中声明的更多的值?

标签 java concurrency

在JDK6中,什么情况下可以Semaphore.availablePermits() > x,其中x是new Semaphore(x)中提供的值?

这是否意味着 Semaphore.release() 被调用的次数比 Semaphore.tryAcquire() 多?

最佳答案

是的,这意味着 Semaphore.release() 被调用的次数比任何获取许可的方法(包括但不限于 tryAquire())都多.具体来说,这意味着某些线程释放了从未获得的许可。

然而,这实际上可能是一种完全正常的情况。如果以某种方式有更多资源可用于执行该操作,那么负责跟踪该操作的线程向池中添加额外许可将是非常有意义的。

关于java - 什么时候 Semaphore.availablePermits() 可以返回比构造函数中声明的更多的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22915675/

相关文章:

c# - 推荐使用 Task.WhenAll 循环执行任务的方法

java - 锁定或同步

Java 扫描器空输出

java - 如何使用java流创建一个固定长度和特定数字的int[]?

sql-server - 在 SQL Server 中,如何以类似于 Oracle 的 "SELECT FOR UPDATE WAIT"的方式锁定单行?

c++ - 与生产者/消费者(某种)和 STL 的并发

java - 不安全发布并发java

java - JFreeChart 时间序列 RegularTimePeriod

java - 在同一个包中编译两个类

java - 如何使用 Java 在 Mac Keychain 中存储用户名/密码?