您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關Java中怎么實現一個偏向鎖,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
偏向鎖和輕量級鎖一樣也是在JDK 1.6中新增的一種鎖,它的目的是為了解決數據在無競爭的時候把同步語句去掉,進一步提高程序的運行性能。在上一篇中使我們知道輕量級鎖是在無數據競爭的時,使用CAS操作去去掉同步的。那么在偏向鎖中就是在無數據競爭時把整個同步都去掉,連CAS操作都不需要做了。偏向鎖實際的本質是就是偏向第一個獲得它的線程,當這個線程在執行時,如果該鎖沒有被其他的線程獲取,則持有偏向鎖的線程將一直不需要進行同步。下面我們看一下在線程獲取偏向鎖時,Mark Word都會有哪些變化。
當線程第一次獲取鎖時,虛擬機會把Mark Word中的標志位修改為01,即偏向模式。同時用CAS操作把獲取到這個鎖的線程記錄在對象的Mark Word之中。如果CAS操作成功,那么持有偏向鎖的線程每次在執行同步代碼塊時,虛擬機都不會進行任何同步操作。也就是不會調用同步相關的字節碼指令等。當有其它線程嘗試去獲取這個鎖時,偏向模式也就結束了。下圖為偏向鎖和輕量級鎖轉化時對象Mark Word等信息的變化。
看完上述內容,你們對Java中怎么實現一個偏向鎖有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。