Java核心知識 多線程併發 輕量級鎖(十七)

Java核心知識 多線程併發 輕量級鎖(十七)

鎖的狀態總共有四種:無鎖狀態、偏向鎖、輕量級鎖和重量級鎖。

鎖升級

隨著鎖的競爭,鎖可以從偏向鎖升級到輕量級鎖,再升級的重量級鎖(但是鎖的升級是單向的, 也就是說只能從低到高升級,不會出現鎖的降級)。

“輕量級”是相對於使用操作系統互斥量來實現的傳統鎖而言的。但是,首先需要強調一點的是, 輕量級鎖並不是用來代替重量級鎖的,它的本意是在沒有多線程競爭的前提下,減少傳統的重量 級鎖使用產生的性能消耗。在解釋輕量級鎖的執行過程之前,先明白一點,輕量級鎖所適應的場 景是線程交替執行同步塊的情況,如果存在同一時間訪問同一鎖的情況,就會導致輕量級鎖膨脹 為重量級鎖。


分享到:


相關文章: