速记-synch和 Reentr
synchronized 和 ReentrantLock 都是用于多线程同步的机制,其区别如下:
锁的获取和释放机制:synchronized 的获取和释放锁的机制是隐式的,由 JVM 来控制;而 ReentrantLock 则是通过代码显式地获取和释放锁。
性能:synchronized 是 JVM 实现的一种内置锁,由 JVM 负责控制锁的加锁和解锁,相对来说性能较高;而 ReentrantLock 则是基于 AQS 的,相对来说开销更大。
可中断性:在获取锁时,如果线程不能立即获取到锁,synchronized 的方式只能一直等待锁的释放,而 ReentrantLock 提供了可中断获取锁的方式。
公平性:synchronized 不保证锁的公平性,而 ReentrantLock 可以通过构造函数来指定锁是否公平。
等待通知机制:synchronized 在等待唤醒时,是由 JVM 来实现的,而 ReentrantLock 则是通过 Condition 来实现等待和唤醒的。
总之,synchronized 是 Java 中的一种内置锁,适用于简单的多线程同步控制;而 ReentrantLock 则是更为灵活和高级的多线程同步机制,适用于复杂的同步控制场景。
锁的获取和释放机制:synchronized 的获取和释放锁的机制是隐式的,由 JVM 来控制;而 ReentrantLock 则是通过代码显式地获取和释放锁。
性能:synchronized 是 JVM 实现的一种内置锁,由 JVM 负责控制锁的加锁和解锁,相对来说性能较高;而 ReentrantLock 则是基于 AQS 的,相对来说开销更大。
可中断性:在获取锁时,如果线程不能立即获取到锁,synchronized 的方式只能一直等待锁的释放,而 ReentrantLock 提供了可中断获取锁的方式。
公平性:synchronized 不保证锁的公平性,而 ReentrantLock 可以通过构造函数来指定锁是否公平。
等待通知机制:synchronized 在等待唤醒时,是由 JVM 来实现的,而 ReentrantLock 则是通过 Condition 来实现等待和唤醒的。
总之,synchronized 是 Java 中的一种内置锁,适用于简单的多线程同步控制;而 ReentrantLock 则是更为灵活和高级的多线程同步机制,适用于复杂的同步控制场景。
全部评论
相关推荐
点赞 评论 收藏
分享
投票
圆规学java:如果不是对钱有很大执念的话,个人不喜欢压力的话,还是建议2,实际上没少多少钱,单休的压力会很大,995对比965,薪资可能都不差什么了。如果确实喜欢不确定的人生,想年轻搏一搏,那就选1
点赞 评论 收藏
分享
点赞 评论 收藏
分享