synchronized和ReentrantLock有什么区别呢?

本文探讨线程安全的三个基本特性:原子性、可见性和有序性,并对比了ReentrantLock和synchronized的用法和特性。ReentrantLock在高竞争条件下性能更优,提供更灵活的锁操作,如公平锁、非公平锁、可中断锁和超时获取锁。使用ReentrantLock需要注意在finally中释放锁,避免异常导致锁意外释放,以及根据条件进行等待和唤醒操作。
摘要由CSDN通过智能技术生成

线程安全需要保证几个基本特性:

1.原子性,简单说就是相关操作不会中途被其他线程干扰,一般通过同步机制实现。
2.可见性,是一个线程修改了某个共享变量,其状态能够立即被其他线程知晓,通常被解释为将线程本地状态反映到主内存上,volatile 就是负责保证可见性的。
3.有序性,是保证线程内串行语义,避免指令重排等。

ReentrantLock是Lock的实现类,是一个互斥的同步器,在多线程高竞争条件下,ReentrantLock比synchronized有更加优异的性能表现。

1 用法比较

Lock使用起来比较灵活,但是必须有释放锁的配合动作;
Lock必须手动获取与释放锁,而synchronized不需要手动释放和开启锁;
Lock只适用于代码块锁,而synchronized可用于修饰方法、代码块等。
此外,reentrantlock有trylock 和lockinterruptly ,所以对锁的操作更灵活。从功能
的角度看,reentrantlock支持公平锁和非公平锁 而synchronized 仅支持非公平锁。

2 特性比较

ReentrantLock的优势体现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

数据大观察

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

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

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

打赏作者

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

抵扣说明:

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

余额充值