1.等待可中斷,持有鎖的執行緒長期不釋放的時候,正在等待的執行緒可以選擇放棄等待,這相當於Synchronized來說可以避免出現死鎖的情況。通過lock.lockInterruptibly()來實現這個機制。 2.公平鎖,多個執行緒等待同一個鎖時,必須按照申請鎖的時間順序獲得鎖,Synchronized鎖非公平鎖,ReentrantLock預設的建構函式是建立的非公平鎖,可以通過引數true設為公平鎖,但公平鎖表現的效能不是很好。公平鎖、非公平鎖的建立方式://建立一個非公平鎖,預設是非公平鎖Lock lock = new ReentrantLock();Lock lock = new ReentrantLock(false);//建立一個公平鎖,構造傳參trueLock lock = new ReentrantLock(true); 3.鎖繫結多個條件,一個ReentrantLock物件可以同時繫結多個物件。ReenTrantLock提供了一個Condition(條件)類,用來實現分組喚醒需要喚醒的執行緒們,而不是像synchronized要麼隨機喚醒一個執行緒要麼喚醒全部執行緒ReenTrantLock實現的原理:之後還會總結一篇ReenTrantLock相關的原理底層原理分析,簡單來說,ReenTrantLock的實現是一種自旋鎖,通過迴圈呼叫CAS操作來實現加鎖。它的效能比較好也是因為避免了使執行緒進入核心態的阻塞狀態。想盡辦法避免執行緒進入核心的阻塞狀態是我們去分析和理解鎖設計的關鍵鑰匙。