Java信号量+调用acquire()时不保持同步锁定

时间:2013-09-16 03:23:08

标签: java multithreading java.util.concurrent

我无法理解链接JavaWorld

上提供的以下行的含义
  

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

请帮助我理解这一点。

2 个答案:

答案 0 :(得分:3)

在文章和代码说明的上下文中,上面的行说明每当调用acquire()方法时,它实际上锁定资源尝试获得。为什么会这样?

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

因为从信号量使用,您要求获取锁定,在队列中等待。只有在您真正获得资源时才会获得锁定。

答案 1 :(得分:0)

查看this动画视频,它可以帮助您