速记-synch和 Reentr

synchronized 和 ReentrantLock 都是用于多线程同步的机制,其区别如下:

锁的获取和释放机制:synchronized 的获取和释放锁的机制是隐式的,由 JVM 来控制;而 ReentrantLock 则是通过代码显式地获取和释放锁。

性能:synchronized 是 JVM 实现的一种内置锁,由 JVM 负责控制锁的加锁和解锁,相对来说性能较高;而 ReentrantLock 则是基于 AQS 的,相对来说开销更大。

可中断性:在获取锁时,如果线程不能立即获取到锁,synchronized 的方式只能一直等待锁的释放,而 ReentrantLock 提供了可中断获取锁的方式。

公平性:synchronized 不保证锁的公平性,而 ReentrantLock 可以通过构造函数来指定锁是否公平。

等待通知机制:synchronized 在等待唤醒时,是由 JVM 来实现的,而 ReentrantLock 则是通过 Condition 来实现等待和唤醒的。

总之,synchronized 是 Java 中的一种内置锁,适用于简单的多线程同步控制;而 ReentrantLock 则是更为灵活和高级的多线程同步机制,适用于复杂的同步控制场景。
全部评论

相关推荐

迷茫的大四🐶:当你得到一些东西,那这些东西就会变成基本项,你有别人也有
点赞 评论 收藏
分享
秋招投简历提醒助手:一开始还觉得是正常交流。直到一看薪资4-6😨
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务