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