首页 > 其他 > 详细

synchronized与ReentrantLock区别

时间:2020-03-28 11:04:58      阅读:43      评论:0      收藏:0      [点我收藏+]

synchronized与ReentrantLock都是可重入锁,区别两者之前,先介绍可重入锁的概念。

可重入锁

同一个线程可以在对象锁还没释放时,可再次获取这个对象的锁。同一个线程每次获取锁,锁的计数器加1,释放一次锁,计数器减1,直到计数器为0,完全释放锁。

synchronized与ReentrantLock区别

  • ReentrantLock是一个类,使用灵活,必须配合释放锁
  • ReentrantLock手动获取或释放锁
  • ReentrantLock只适用代码块锁,synchronized不仅适合代码块,也适用类、变量
  • 锁机制不一样。ReentrantLock调用Unsafe的park加锁,synchronized使用对象mark word

顺便提一下synchronized作用不同,它对应锁的是什么?

  • 普通方法:锁当前实例
  • 静态方法:锁当前类的class对象
  • 方法块:锁括号里的对象

 

synchronized与ReentrantLock区别

原文:https://www.cnblogs.com/ivy-xu/p/12586140.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!