ReentrantLock与synchronized的区别

文章详细比较了ReentrantLock与synchronized的区别,包括加锁解锁机制、锁的公平性以及等待通知的不同策略。ReentrantLock提供tryLock和可定制的公平锁,而synchronized则是非公平锁,且与wait/notify配合,而ReentrantLock则与Condition结合实现更细粒度的控制。
摘要由CSDN通过智能技术生成

ReentrantLock与synchronized的区别

synchronized 基于代码块的方式控制加锁与解锁
ReentrantLock 基于 lock(加锁) 与 unlock(解锁) 方式控制加锁与解锁

🔎区别1

synchronized 只是单纯的加锁与解锁

ReentrantLock 对于加锁成功与synchronized 并无区别

ReentrantLock 对于加锁失败提供了额外的 tryLock方法
通过tryLock方法可以直接返回false, 由程序员决定接下来做什么


🔎区别2

synchronized 是一个非公平锁

ReentrantLock 提供了公平锁与非公平锁两种
默认状态下是一个非公平锁
对于 ReentrantLock 的公平锁, 需要在构造方法中加入 true
在这里插入图片描述


🔎区别3

对于synchronized
通常搭配 wait, notify 进行使用
如果多个线程 wait 同一个对象, 那么 notify 的时候是随机的

对于ReentrantLock
通常搭配 Condition 这个类, 这个类也能起到等待通知的作用, 而且当多个线程等待同一个对象时, 可以指定一个线程通知


🔎结尾

创作不易,如果对您有帮助,希望您能点个免费的赞👍
大家有什么不太理解的,可以私信或者评论区留言,一起加油

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值