面試-synchronized和ReentrantLock的區別

從以下五個點答就行。

(1)synchronized是獨佔鎖,加鎖和解鎖的過程自動進行,易於操作,但不夠靈活。

ReentrantLock也是獨佔鎖,加鎖和解鎖的過程需要手動進行,不易操作,但非常靈活。

(2)synchronized可重入,因爲加鎖和解鎖自動進行,不必擔心最後是否釋放鎖;

ReentrantLock也可重入,但加鎖和解鎖需要手動進行,且次數需一樣,否則其他線程無法獲得鎖。

(3)synchronized不可響應中斷,一個線程獲取不到鎖就一直等着;

ReentrantLock可以相應中斷。

(4)ReentrantLock可以實現公平鎖,synchronized不可以。

(5)synchronized是jvm層面的,ReentrantLock是寫出來的API,效率會低一點。

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