我无法理解链接 JavaWorld 上提供的以下行的含义
No synchronization lock is held when acquire() is called because that would prevent an item from being returned to the pool.
请帮助我理解这一点。
最佳答案
在文章和代码解释的上下文中,上面的行表示每当调用 acquire() 方法时,它实际上不会锁定它尝试的资源> 获取。为什么会这样呢?
信号量就像 sleep 锁。当任务尝试获取已持有的信号量时,信号量会将任务放入等待队列并使任务进入休眠状态。
因为从信号量的使用来看,您正在请求获取锁,并且在队列中等待。只有当你真正获得资源时,你才会获得锁。
关于Java信号量+调用acquire()时不持有同步锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18819968/