我无法理解链接JavaWorld中提供的以下行的含义


  调用acquire()时不保留任何同步锁,因为这将阻止将某个项目返回到池中。


请帮助我理解这一点。

最佳答案

在文章和代码说明的上下文中,上一行表示,每当调用generate()方法时,它实际上并不锁定它尝试获取的资源。为什么会这样呢?

信号量就像睡锁。当任务尝试获取已保存的信号量时,该信号量会将任务置于等待队列中,并使任务进入睡眠状态。

因为根据信号量的使用,您正在请求获取锁,并在队列中等待。只有在实际获得资源后,您才会获得锁。

08-03 17:28
查看更多