synchronized与ReentrantLock区别

删除回忆录丶 提交于 2020-03-28 10:54:52

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

可重入锁

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

synchronized与ReentrantLock区别

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

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

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

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!