速记-synch和 Reentr

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

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

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

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

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

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

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

相关推荐

07-09 20:50
门头沟学院 Java
码农索隆:1.教育背景和荣誉证书合二为一。 2.获奖项目理一遍,你做了什么,对你求职的岗位有什么帮助,没有就删掉。 3.技能特长和教育背景交换位置。 4.技能特长写的太差,上网上找简历参考。都不用问你别的,一个redis就能把你问住,写写你具体会redis哪些方面的知识。
点赞 评论 收藏
分享
从明天开始狠狠卷JV...:叽里咕噜一大堆,不就是字典序,sort一下就搞定了。
投递京东等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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