java多線程synchronized和reentrantlock區別

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章