什么是公平與非公平?
大白話簡單來說,公平鎖就相當于是正常生活購物場景中的排隊結賬,排好隊一個接一個來搶占一個收銀臺;非公平鎖就是一窩蜂地爭搶著結賬,誰先搶到就給誰結賬,
按照生活常識來說,明顯是排隊效率比較高,
更高效的原因
在計算機世界中,對于Java而言,用戶執行緒和系統執行緒是屬于1:1的對應關系,執行緒切換存在【執行現場保存和恢復】,這個程序是非常耗費時間(在許多情況下,執行緒切換的時間遠遠大于代碼執行的時間),因此,如果一個執行緒在running期間直接搶占到鎖資源,就不需要進行【恢復現場】操作,也就可以更快地執行業務代碼,相反地,如果是一個就緒態的執行緒想要獲得鎖資源,首先需要恢復現場,之后爭搶鎖(可能成功也可能失敗),此時就已經浪費了大量的CPU,只有在獲取鎖成功后才能繼續執行業務代碼,
總的來說,主要高效的原因就在于需不需要進行現場恢復和不同態之間切換,
僅屬個人理解,如有錯誤,還望大佬多多指教,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/249062.html
標籤:其他
上一篇:【考研初試】問題匯總及解答
下一篇:社交距離檢測
