synchronized和ReentrantLock的区别的详细解读分析实现方式

本文详细对比了synchronized和ReentrantLock在实现方式、自动解锁、可重入性及公平性方面的区别。synchronized是Java关键字,基于JVM实现,自动解锁;ReentrantLock是JDK juc包中的类,基于AQS,需手动解锁。两者皆可重入,但synchronized非公平,ReentrantLock可设置为公平锁。
摘要由CSDN通过智能技术生成

synchronized和ReentrantLock的区别

synchronized和ReentrantLock是jdk中保证线程安全的两大常用手段,也是两大利器。那他俩有啥区别呢?或者各自的特定和使用场景怎么样的呢?
梳理他俩区别要从多个方面来分析,见如下表格。

synchronized ReentrantLock
实现层面 Jvm c++实现 Jdk java语言实现
是否自动解锁
是否可重入
是否公平 公平、非公平可选

详细解读

1. 实现层面

synchronized 是Java的一个关键字,可以修饰方法和代码块。从Jvm层面由C++实现。
ReentrantLock 是Jdk juc包下的一个类,以AQS (AbstractQueuedSynchronizer)为基础实现,内部主要用到CAS来保证原子性实现线程安全。

2. 是否自动解锁

synchronized 是自动解锁的,无需关心解锁过程。即使发生异常也会自动解锁。
ReentrantLock 需要开发者自己调用加锁与解锁方法,并且,解锁要放在 fina

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大树91

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值