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 这个类, 这个类也能起到等待通知的作用, 而且当多个线程等待同一个对象时, 可以指定一个线程通知文章来源:https://www.toymoban.com/news/detail-409288.html
🔎结尾
创作不易,如果对您有帮助,希望您能点个免费的赞👍
大家有什么不太理解的,可以私信或者评论区留言,一起加油文章来源地址https://www.toymoban.com/news/detail-409288.html
到了这里,关于ReentrantLock与synchronized的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!