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
来源:CSDN
作者:pink baby
链接:https://blog.csdn.net/weixin_40027906/article/details/103866678