源码篇:ReentrantLock 源码分析下篇

本文详细分析了ReentrantLock的lock和lockInterruptibly方法的源码,揭示了两者在处理中断请求上的差异。lockInterruptibly在锁获取过程中遇到中断会立即抛出InterruptedException,而lock则会忽略中断,直到成功获取锁。此外,文章还探讨了newCondition创建的条件队列,包括其作用、节点状态及等待与唤醒操作,展示了显式条件队列如何扩展了内置锁的条件等待功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言

上一节介绍了 ReentrantLock 类的 lock 锁获取流程,本节继续来说说它的其他两个知识点:

  • locklockInterruptibly 的区别
  • newCondition() ,条件队列的实现逻辑

lock 和 lockInterruptibly 的区别

ReentrantLock 的 lock 方法有几种获取锁方式:

  1. tryLock()tryLock(long ,TimeUnit) ,可轮询的、可定时地获取锁;
  2. lock() ,无条件地轮询获取锁,锁等待期间,线程可被中断;
  3. lockInterruptibly() ,可中断的锁获取方式,锁等待期间,线程可被中断。

lock()lockInterruptibly() ,这两个方法都能响应中断请求,但是区别在哪里呢࿱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值