1.等待可中斷
當線程長時間獲取不到鎖時,可以選擇放棄等待,改爲執行其它操作,提高執行效率。
2.可實現公平鎖
synchronized實現的是非公平鎖,線程獲取鎖的順序是競爭方式;ReentrantLock默認情況下是非公平鎖,但是可根據參數來實現公平鎖,這樣線程獲取鎖的順序是按照時間順序依次獲取。
3.可關聯到多個條件
通過ReentrantLock.newCondition()可以關聯到多個條件上,無需獲取額外的鎖;而synchronized如果要關聯到多個條件,需要額外再次使用synchronized獲取鎖。
4.加鎖更靈活
雖然,synchronized可以修飾語句塊,實現對部分代碼的同步控制,但是,相對於ReentrantLock來說不是很靈活,ReentrantLock可以在任何地方加鎖、釋放鎖。
加微信wind7rui,邀你加入技術交流羣!