java进阶-7-D -多线程-Lock专题- Lock接口

本文详细解析了Java中Lock接口的特性和使用方法,对比synchronized关键字,Lock提供了更灵活的锁操作,如可重入、中断响应及条件变量等高级功能。适合于希望深入了解并发编程的开发者。

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

Lock接口

1.从关系图来看,这个Lock算是一个核心接口,非常多的地方实现了它

就这一眼看过去这几个方法已经把一个锁应该做的事情都列举出来了,可以通过声明Lock实例化对应的接口实现类,来达到面向对象的封装性。 不错

Lock的锁与Synchronized的相比 有几个特性 ---实现层面上不同 / Lock有可以重入,synchronized是独占  / 只有Lock会造成活锁

简单的介绍一下Lock接口中各个方法的意图:

  • void lock() ; 
    • 获取锁。如果锁定不可用,则当前线程将被禁用以进行线程调度,并且在获取锁定之前处于休眠状态。实施注意事项Lock实现可能能够检测到锁的错误使用,例如可能导致死锁的调用,并且可能在这种情况下抛出(未经检查的)异常。 必须通过Lock实现记录环境和异常类型。
  • void lockInterruptibly() throws InterruptedException;        
    • 除非当前线程是已经加了 interrupt中断 标记,否则获取锁。如果锁不可用,那么当前线程将被禁用以进行线程调度,并且在发生以下两种情况之一之前处于休眠状态:(1)锁定由当前线程获取; (2)其他一些线程Thread#interrupt中断当前线程,并支持锁定获取中断。
  • boolean tryLock();          
    •   尝试获取锁,要是成功返回true ,失败就返回false
  •  boolean tryLock(long time, TImeUnit unit) throws InterruptedException;        
    •   尝试在规定时间 time (unit) 内获取锁,成功返回true, 失败返回false
  • void unLock();        
    •   释放锁,该动作非常必要,一般都将该动作放在try/catch/finally 的finally中保证锁的安全释放
  •  Condition  newCondition();        
    •  返回一个新的Condition对象,该对象简单来讲就是可以实现一个不同线程之间信号传递的作用,和wait/notify/notifyAll 功能比较接近

关于Lock的东西不多但是必须要牢记的                                                        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值