@[toc]
鎖的分類

什麼是公平 與 非公平
- 公平是按照線程的請求順序,來配置設定鎖 非公平是指不完全按照請求的順序,在一定情況下,可以插隊的
注意:非公平也同樣不提倡 插隊行為,這裡的非公平是指在合适的時機插隊,而不是盲目的插隊
為什麼要有非公平鎖
-
ava設計者 這樣設計的目的,是為了提高效率
避免喚醒帶來的空檔期
公平的情況 ReentrantLock
如果建立 ReentrantLock對象時,參數填寫為 true ,那麼這就是個公平鎖 依次執行
-
我們可以看下ReentrantLock 源碼 官方的解釋是當為true的時候 就是公平政策
是個三母運算符 為 true則建立個 FairSync()方法
- ync object for fair locks 公平鎖的同步對象 方法繼承了 extends Sync
- 并且 在 if判斷中,他會先擷取下排隊的線程
不公平的情況 ReentrantLock
線程1 擷取鎖,釋放鎖,線程2在排隊等待擷取鎖,但是線程5 突然插隊拿到鎖,這就是非公平鎖,線程2還沒來得及擷取鎖,
ReentrantLock 預設的就是非公平政策
通過源碼可以發現
三目 預設走的是false ,非公平鎖政策
- 公平鎖不同的是 ,他不會擷取正在排隊的線程