ReentranLock浅析与用法

本文详细解析了ReentrantLock的工作原理,包括其可重入特性、避免死锁的方法及主要接口使用,如lock(), tryLock(), lockInterruptibly(), unlock()等。同时介绍了ReentrantLock的构造方法和条件对象的使用。

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

一、定义

  ReentantLock 继承接口 Lock,他是一种可重入锁(*),除了能完成 synchronized 所能完成的所有工作外,还提供了诸如可响应中断锁可轮询锁请求定时锁等避免多线程死锁的方法。
二、主要接口
  1. void lock():如果锁处于空闲状态,当前线程将获取到锁;否则如果锁已经被其他线程持有, 将禁用当前线程(处于阻塞状态), 直到当前线程获取到锁
  2. boolean tryLock():如果锁可用,则获取锁,并立即返回 true;否则返回 false
  3. void lockInterruptibly() throw InterruptedException:与lock()方法一致,但是线程中断时,会抛出InterruptedException异常
  4. void unlock():当前线程将释放持有的锁;如果线程并不持有锁, 却执行该方法, 可能导致异常的发生
  5. boolean isLocked():是否有线程
  6. ReentrantLock():默认非公平锁
  7. ReentrantLock(boolean fair):配置公平锁/非公平锁(false:非公平锁;true:公平锁)
  8. Condition newCondition():条件对象,获取等待通知组件(该组件和当前的锁绑定)
    • void await() throw InterruptedException:等效Object类的wait()方法
    • void signal():等效Object类的notify()方法
    • void signalAll():等效Object类的notifyAll()方法

 

转载于:https://www.cnblogs.com/pascall/p/11121428.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值