Lock锁
发布日期:2021-06-30 12:34:10
浏览次数:2
分类:技术文章
本文共 687 字,大约阅读时间需要 2 分钟。
Lock接口
锁是用来控制多个线程访问共享资源的方式
一般来说,锁能够防止多个线程同时访问共享资源(但也有的锁可以允许多个线程访问共享资源,比如读写锁) 在Lock接口出现前,靠synchronized实现锁功能,但是在Java5之后并发包中新增了Lock接口(及其相关实现类)来实现锁功能.它提供了与synchronized类似的同步功能,只是Lock需要显示的获取和释放锁,虽然缺少了隐式获取释放锁的便捷性,但是拥有了获取与释放锁的可操作性,可中断的获取锁以及超时获取等多种synchronized不具备的同步特性
大体上使用synchronized代码量更少,出错可能性低,因此通常只有在处理特殊问题时,才使用显式的Lock对象.
使用也很简单,如下
Lock lock = new ReentrantLock();lock.lock();try {} finally { lock.unlock();}
- 在finally块中释放锁,是为保证在获取到锁之后,最终能够被释放。这也是比synchronized好的地方,即使某些事务失败了,finally字句的unlock()将系统维护在正确状态 不要将获取锁的过程写在try块中,因为如果在获取锁(自定义锁的实现)时发生了异常,异常抛出的同时,也会导致锁无故释放。
Lock接口提供的synchronized所不具备的主要特性如下表
Lock是一个接口,它定义了锁获取和释放的基本操作,API如表
这里只是简单介绍一下Lock接口的API
Lock接口的实现基本都是通过聚合了一个同步器的子类来完成线程访问控制的转载地址:https://javaedge.blog.csdn.net/article/details/78705065 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年04月22日 15时15分31秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
LeetCode-206:反转链表
2019-04-30
计算机网络(一)—— 概述(3、4):三种交换方式、计算机网络的定义和分类
2019-04-30
计算机网络(一)—— 概述(5):计算机网络的性能指标
2019-04-30
计算机网络(一)—— 概述(6):计算机网络体系结构
2019-04-30
计算机网络(一)—— 概述(7):总结
2019-04-30
计算机网络(三)—— 数据链路层(1):数据链路层概述
2019-04-30
计算机网络(三)—— 数据链路层(5):点对点协议PPP
2019-04-30
MySQL(一)-约束
2019-04-30
Mysql(三)-视图
2019-04-30
SpringBoot(一)-入门介绍
2019-04-30
SpringBoot(二)-配置文件与自动配置
2019-04-30
Linux上安装Docker并使用(含错误解决)
2019-04-30
SpringBoot-整合Dubbo+Zookeeper
2019-04-30
利用HTML,CSS,JS实现登录页面的制作
2019-04-30
利用HTML,CSS,JS进行注册页面的制作
2019-04-30
前端学习详细知识点讲解-HTML(第一天)
2019-04-30
前端学习详细知识点讲解-HTML(第二天)
2019-04-30
前端学习详细知识点讲解-CSS(第一天)
2019-04-30
前端学习详细知识点讲解-CSS(第二天)
2019-04-30