【每天一道面試題】ReentrantLock相對於synchronized的優勢有哪些?

1.等待可中斷

當線程長時間獲取不到鎖時,可以選擇放棄等待,改爲執行其它操作,提高執行效率。

2.可實現公平鎖

synchronized實現的是非公平鎖,線程獲取鎖的順序是競爭方式;ReentrantLock默認情況下是非公平鎖,但是可根據參數來實現公平鎖,這樣線程獲取鎖的順序是按照時間順序依次獲取。

3.可關聯到多個條件

通過ReentrantLock.newCondition()可以關聯到多個條件上,無需獲取額外的鎖;而synchronized如果要關聯到多個條件,需要額外再次使用synchronized獲取鎖。

4.加鎖更靈活

雖然,synchronized可以修飾語句塊,實現對部分代碼的同步控制,但是,相對於ReentrantLock來說不是很靈活,ReentrantLock可以在任何地方加鎖、釋放鎖。

加微信wind7rui,邀你加入技術交流羣

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