Java中各種鎖的總結

Java中鎖的分類
在這裏插入圖片描述

1. 悲觀鎖(互斥同步鎖)

代表:synchronized、Lock相關類
示例:

  • 數據庫悲觀鎖修改
-- 鎖表修改
select * from x_user for update;

缺點:

  • 阻塞和喚醒帶來的性能劣勢。
  • 永久阻塞,如果持有鎖的線程無限循環、死鎖等活躍性問題,那麼等待該線程釋放鎖的其它線程,將永遠也得不到執行。
  • 優先級反轉,比如優先級低的線程阻塞了,導致優先級高的線程得不到執行

優點:

  • 一勞永逸:正常執行時效率高、消耗低

總結:併發寫入多,讀取少的場景。適用於臨界區持鎖時間比較長的情況,悲觀鎖可以避免大量的無用自旋等消耗,典型情況:

  • 臨界區的IO操作
  • 臨界區代碼複雜或者循環量大
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章