首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
物联网/工业互联网
›
物联网
›
Java并发—ReetrantLock详解及应用
返回列表
发新帖
Java并发—ReetrantLock详解及应用
[复制链接]
发表于 2024-8-11 04:11:45
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
目录
一、ReetrantLock的特性
1、非阻塞获取锁
2、带超时的锁获取:
3、锁的公平性
4、锁的可停止性
5、Condition条件变量
6、锁的可重入性
可重入锁
不可重入锁
7、
性能
优化
二、ReentrantLock和Synchronized的区别
1、语法和使用方式
2、锁的获取和释放
3、高级特性
4、条件变量
5、
性能
总结
三、ReentrantLock使用场景
之前的文章Java并发—synchronized关键字的应用-CSDN博客报告了sychronized的应用,那为什么还需要其他的锁呢?
在使用
Synchronized
,会存在以下几个题目:
不可停止锁,需要线程实验完才会释放锁(synchronized的获取和释放锁由jvm实现)
非公平锁
Synchronized引入了偏向锁,轻量级锁(自旋锁)后,
性能
有所提升
synchronized属于
隐式锁
,即锁的持有与释放都是隐式的,可能会导致死锁
为了可以灵活地控制锁,就需要使用到
显式锁
,即锁的持有和释放都必须手动编写
ReentrantLock
是一把
可重入锁
和
互斥锁
,它具有与
Synchronized
关键字类似的含有隐式监视器锁(monitor)的基本行为和语义,但是它比
Synchronized
具有更多的方法和
功能
在Java 1.5中,官方在concurrent并发包中加入了
Lock
接口,ReentrantLock位于java.util.concurrent.locks包下,实现了
Lock
接口和
Serializable
接口,该接口中提供了
lock()
方法和
unLock()
方法对显式加锁和显式释放锁利用举行支持
public class ReentrantLock implements Lock, java.io.Serializable {……}
复制
代码
Lock lock = new ReentrantLock();
public void save(){
try{
lock.lock();
//业务
代码
……
}finally{
lock.unlock();
}
}
复制
代码
从上述代码可以使用ReentrantLock来管理锁,确保在save方法实验期间对资源的独占访问。通过try-finally结构确保纵然发生异常也能精确地使用lock.unlock()释放锁
ReentrantLock实现了Lock接口,Lock接口是Java中对锁利用行为的同一规范
ReentrantLock结构:
回复
使用道具
举报
返回列表
浏览过的版块
Mysql
.Net
linux
宝塔山
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表