0

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

调用 acquire() 时不会持有同步锁,因为这会阻止项目返回到池中。

请帮助我理解这一点。

4

2 回答 2

3

在文章和代码解释的上下文中,上面这行表示,每当调用 acquire() 方法时,它实际上并没有锁定它试图获取的资源。为什么会这样?

信号量就像睡锁。当任务尝试获取已持有的信号量时,信号量将任务放入等待队列并使任务进入睡眠状态。

因为从信号量使用中,您请求获取锁,并在队列中等待。只有当您实际获得资源时,您才会获得锁。

于 2013-09-16T03:48:24.077 回答
0

看看这个动画视频它对你有帮助

于 2013-10-23T13:10:21.503 回答