1. 程式人生 > >ReenTrantLock和Synchronized

ReenTrantLock和Synchronized

相同點:

都是可重入鎖,都是同一個執行緒沒進入一次,鎖的計數器自增1,等到鎖的計數器為0時釋放鎖。

不同點:

1、Synchronized依賴jvm實現,實現方式比較難見到,ReetTrantLock依賴JDK實現,有原始碼可看。

2、Synchronized使用簡單便捷,加鎖,解鎖由編譯器實現;ReenTrantLock需要手動宣告、加鎖、解鎖,功能更細粒度和靈活。

3、ReenTrantLock可以指定是公平鎖還是非公平鎖,Synchronized只能是非公平鎖。

4、ReenTrantLock提供了一個條件類,可以分組喚醒需要喚醒的執行緒,Synchronized只能隨機喚醒或者喚醒全部。

5、ReenTrantLock提供了可中斷等待鎖的執行緒的機制,通過lock.lockInterruptibly()來實現這個機制。

 

 

文章整理自:https://blog.csdn.net/z69183787/article/details/79344382