即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

[JAVA学习与进阶学习与进阶笔记-78]lockInterruptibly

编程语言 sinat_36263171 20℃ 0评论
lock()适用于锁获取操作不受中断影响的情况,此时可以忽略中断请求正常执行加锁操作,因为该操作仅仅记录了中断状态(通过Thread.currentThread().interrupt()操作,只是恢复了中断状态为true,并没有对中断进行响应)。如果要求被中断线程不能参与锁的竞争操作,则此时应该使用lockInterruptibly方法,一旦检测到中断请求,立即返回不再参与锁的竞争并且取消锁获取操作(即finally中的cancelAcquire操作)

【lockInterruptibly】
    线程在尝试获取锁的过程中(挂起过程),允许响应中断,处理中断异常,进而退出锁的竞争。
    在BlockingQueue的put/take操作中均使用此方法获取锁,推测其用意是尽量减少锁竞争的开销,一旦某个线程被中断,立即响应中断并结束,避免
线程长时间获取不到锁而挂起。

转载请注明:CodingBlog » [JAVA学习与进阶学习与进阶笔记-78]lockInterruptibly

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情