java多线程synchronized和reentrantlock区别

与世无争的帅哥 提交于 2020-01-10 08:08:02

synchronized是非公平锁,reentrantlock可以指定为公平锁。

synchronized修饰非静态的方法时,所对象为当前类的class单例对象。

ReentrantLock可以替代synchronized,使用synchronized锁定如果遇到一场,jvm会自动释放锁,使用reentrantlock必须手动释放锁,一般在finally中释放。

reentrantlock可是使用trylock尝试锁定,这样无法锁定,或者在给定的时间无法锁定,线程可以决定继续等待。

使用ReentrantLock还可以调用lockInterruptibly方法,对象成interrupt方法做出相应。

参考:https://segmentfault.com/a/1190000019737594

Synchronized的底层实现

https://www.cnblogs.com/mingyao123/p/7424911.html

 

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