025 Java中有了Synchronized作为锁为啥还需要整出个Lock

1、在Synchronized锁“横行”的时代,假设现在需求是非阻塞地获取锁、响应中断地获取锁、超时地获取锁等需求的时候,Synchronized便解决不了,于是Lock便登场了。

Lock登场将加锁和解锁的行为交给使用者(也就是程序员),使得使用锁更灵活了。针对一个场景,手把手进行锁获取和释放,先获得锁A,然后再获取锁B,当锁B获得后,释放锁A同时获取锁C,当锁C获得后,再释放B同时获取锁D,以此类推。这种场景下, synchronized关键字就不那么容易实现了,而使用Lock却容易许多。

2、Lock的使用也非常简单

		Lock lock = new ReentrantLock();
		lock.lock();
		try {
		} finally {
			lock.unlock();
		}

在使用Lock获取锁和释放锁的注意事项:

(1)在finally块中释放锁,目的是保证在获取到锁之后,最终能够一定被释放。
(2)不要将获取锁的过程写在try块中,因为如果在获取锁(自定义锁的实现)时发生了异常, 异常抛出的同时,也会导致锁无故释放

3、Lock接口提供的主要特性(synchronized关键字所不具备的)

4、Lock的API如下(Lock是一个接口,它定义了锁获取和释放的基本操作)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值