隨着競爭情況逐漸升級,鎖可以升級但不能降級。
鎖一共四種狀態,低-->高 無鎖狀態、偏向鎖狀態、輕量級鎖狀態、重量級鎖狀態。
偏向鎖:
優點:加鎖和解鎖不需要額外的消耗,和執行非同步方法相逼僅存在納秒級的差距。
缺點:如果線程間存在鎖競爭,會帶來額外的鎖撤銷的消耗(適用只有一個線程訪問同步塊場景)
輕量級鎖:
優點:競爭的線程不會阻塞,提高了程序的響應速度
缺點:如果始終得不到鎖競爭的線程會自旋消耗CPU (追求響應時間,同步塊執行速度非常快)
重量級鎖:
優點:線程競爭不使用自旋,不會消耗CPU
缺點:線程阻塞,響應時間緩慢 (追求吞吐量,同步塊執行速度較長)