【鎖】synchronized 和ReentrantLock

1. 鎖的實現

synchronized 是 JVM 實現的,而 ReentrantLock 是 JDK 實現的。性能

2. 性能

新版本 Java 對 synchronized 進行了不少優化,例如自旋鎖等,synchronized 與 ReentrantLock 大體相同。優化

3. 等待可中斷

當持有鎖的線程長期不釋放鎖的時候,正在等待的線程能夠選擇放棄等待,改成處理其餘事情。線程

ReentrantLock 可中斷,而 synchronized 不行。對象

4. 公平鎖

公平鎖是指多個線程在等待同一個鎖時,必須按照申請鎖的時間順序來依次得到鎖。it

synchronized 中的鎖是非公平的,ReentrantLock 默認狀況下也是非公平的,可是也能夠是公平的。io

5. 鎖綁定多個條件

一個 ReentrantLock 能夠同時綁定多個 Condition 對象。di

相關文章
相關標籤/搜索