回覆列表
-
1 # yes的練級攻略
-
2 # 小精靈zx
synchronized 鎖升級原理:在鎖物件的物件頭裡面有一個 threadid 欄位,在第一次訪問的時候 threadid 為空,jvm 讓其持有偏向鎖,並將 threadid 設定為其執行緒 id,再次進入的時候會先判斷 threadid 是否與其執行緒 id 一致,如果一致則可以直接使用此物件,如果不一致,則升級偏向鎖為輕量級鎖,透過自旋迴圈一定次數來獲取鎖,執行一定次數之後,如果還沒有正常獲取到要使用的物件,此時就會把鎖從輕量級升級為重量級鎖,此過程就構成了 synchronized 鎖的升級。
鎖的升級的目的:鎖升級是為了減低了鎖帶來的效能消耗。在 Java 6 之後最佳化 synchronized 的實現方式,使用了偏向鎖升級為輕量級鎖再升級到重量級鎖的方式,從而減低了鎖帶來的效能消耗。
【面試官:談談你對synchronized的瞭解?】https://toutiao.com/item/6668933435244937731/?app=news_article_social×tamp=1552924652&group_id=6668933435244937731&tt_from=copy_link&utm_source=copy_link&utm_medium=toutiao_ios&utm_campaign=client_share 看看