全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

synchronized和ReentrantLock的异同点

发布时间:2022-09-20 16:03:14
发布人:wjy

  目前不涉及原理层面的比较,简单介绍一下两者的异同

  相同点

  1.在功能上它们都是通过加锁方式来协调多线程对共享变量的访问,而且都是同步式阻塞。

  2.都是可重入锁,即一个线程可以多次获得同一把锁。

  3.都保证了可见性、原子性(互斥性)。

synchronized和ReentrantLock的异同点

  不同点

  1、两者最大的区别就是synchronized是Java内置的关键字,是原生语法层面的互斥,是JVM层面的同步机制。而ReentrantLock是JDK5之后提供的API层面的互斥锁,需要lock(),unlock()方法结合try/finally语句实现。

  2、在性能上,synchronized优化前,它的性能相比ReentrantLock要差一些。但在synchronized优化后,两者性能差距不大了。

  3、synchronized隐式地获得、释放锁,ReentrantLock显式地获得、释放锁。

  4、相比于synchronized,ReentrantLock提供了一些高级功能,主要有三种。

  等待可中断,即持有锁的线程长期不释放的时候,正在等待的线程可以选择放弃等待。这相对于synchronized来说可以避免出现死锁的情况。通过lock.lockInterruptibly()来实现这个机制。ReentrantLock可以实现公平锁。ReentrantLock可以通过Condition类绑定多个条件,实现分组唤醒需要唤醒的线程们。synchronized只能随机唤醒一个线程或唤醒全部线程。

  5、通过Lock能知道是否成功获取到锁,而synchronized无法做到。

相关文章

显著性目标检测和一般目标检测最本质的区别是什么区别?

显著性目标检测和一般目标检测最本质的区别是什么区别?

2023-10-15
在目标检测里single-shot和multi-shot的主要区别是什么?

在目标检测里single-shot和multi-shot的主要区别是什么?

2023-10-15
APP安全测试与普通B/S架构的渗透测试有什么区别?

APP安全测试与普通B/S架构的渗透测试有什么区别?

2023-10-15
什么是域控制器?

什么是域控制器?

2023-10-15

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取