栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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是一个接口,它定义了锁获取和释放的基本操作)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/774952.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号