【Java并发编程】Lock锁对象

前面我们一直提到的,同步代码(synchronized方法,synchronized变量)依赖于可重入锁,这种锁很容易使用,但是有很多局限性。更复杂的锁在Java.util.concurrent.locks包中,我们今天只简单聊聊Lock对象。

Lock对象工作方式很想我们前面提到的同步锁,我们将前面介绍过的锁称作隐示锁。和隐示锁一样,Lock对象一次也只能只能有一个对象拥有该锁。Lock对象也可以通过Condition类同样支持wait/notify的机制

Lock对象与隐示锁相比,最大的优势在于,不仅具备隐示锁的能力,还具备:如果获取锁失败,可以在直接返回,或者在指定时间内失败后返回(tryLock方法)。而隐示锁只能够做到当不能获取到锁的时候,让线程阻塞在那里。另外一个方法lockInterruptibly可以做到当其他线程发来中断事件过来,而当前线程没有获得对象的锁的时候,可以直接返回。由于使用隐示锁的同步方法不一定能马上获取到对象锁而处于阻塞状态,这点正是我们之前说过的,可以将时间处理较长的任务设计成响应中断的。lockInterruptibly正符合这种情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值