公平鎖和非公平鎖

2021-07-22 11:24:10 字數 273 閱讀 3271

公平鎖和非公平鎖的不同是發生在乙個新的執行緒搶占乙個鎖的情況下。

1.對於非公平鎖,當乙個新的執行緒想要得到乙個鎖,而這時鎖恰好沒有被別的執行緒占有,那麼這時候這個新的執行緒就可以無視其他執行緒在等待佇列中的排隊,而直接獲取這個鎖,而且不用先加入等待佇列。

2,公平鎖,就是乙個新的執行緒想要得到乙個鎖,這時候不論鎖是否已經被占有了,都要先把自己加到等待佇列中,然後等佇列前面的執行緒都處理完以後,自己才能得到鎖。

注意:對於已經加入到等待佇列中的執行緒,要依次獲取鎖,不能越過前驅節點中的執行緒,去獲取鎖。

公平鎖和非公平鎖

所謂公平鎖指的是哪個執行緒先執行,那就可以先得到鎖。非公平鎖是不管執行緒是否是先執行,上來就直接嘗試占有鎖,如果嘗試失敗,就再採用類似公平鎖那種方式。我們看下reentrantlock 類的原始碼 公平鎖 protected final boolean tryacquire int acquires...

公平鎖和非公平鎖

三 reentrantlock非公平鎖 三 reentrantlock公平鎖 有個小夥伴最近諮詢我,前段時間他被面試官問了synchronized是公平鎖還是非公平鎖?當時就矇圈了,最後面試結果可想而知,今天我們就用乙個通俗的案例加上 來說明公平鎖和非公平鎖。其實公平鎖這個概念是juc工具包才有的,...

公平鎖與非公平鎖

在reentrantlock中很明顯可以看到其中同步包括兩種,分別是公平的fairsync和非公平的nonfairsync。公平鎖的作用就是嚴格按照執行緒啟動的順序來執行的,不允許其他執行緒插隊執行的 而非公平鎖是允許插隊的。預設情況下reentrantlock是通過非公平鎖來進行同步的,包括syn...