synchronized和ReentrantLock有什么区别呢?
下文笔者讲述synchronized和ReentrantLock之间的区别说明,如下所示
synchronized和ReentrantLock相同点
synchronized和ReentrantLock都是可重入锁
synchronized和ReentrantLock区别
区别1:本质不同
synchronized 是关键字
ReetrantLock是类
区别2:可扩展性不同
synchronized是关键字--系统原生提供-无法扩展
ReetrantLock是类---可提供继承,有方法,和一些变量的获取--如锁状态
区别3:加锁和释放锁的方式不同
synchronized无需要手动开启和释放锁
ReentrantLock必须手动获取与释放锁
区别4:可作用域不同
synchronized可给方法、代码块加锁
ReentrantLock只能给代码块加锁
区别5:性能不同
synchronized在竞争量比较小的情况下比ReentrantLock性能好
区别6:底层实现不同---两者锁机制不同
synchronized操作对象头中mark word
ReentrantLock底层调用的是Unsafe的park方法加锁
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


