首頁>Club>
java為什麼加上synchronized就能實現執行緒同步?底層原理是什麼?
5
回覆列表
  • 1 # yes的練級攻略

    【面試官:談談你對synchronized的瞭解?】https://toutiao.com/item/6668933435244937731/?app=news_article_social&timestamp=1552924652&group_id=6668933435244937731&tt_from=copy_link&utm_source=copy_link&utm_medium=toutiao_ios&utm_campaign=client_share 看看

  • 2 # 小精靈zx

    synchronized 鎖升級原理:在鎖物件的物件頭裡面有一個 threadid 欄位,在第一次訪問的時候 threadid 為空,jvm 讓其持有偏向鎖,並將 threadid 設定為其執行緒 id,再次進入的時候會先判斷 threadid 是否與其執行緒 id 一致,如果一致則可以直接使用此物件,如果不一致,則升級偏向鎖為輕量級鎖,透過自旋迴圈一定次數來獲取鎖,執行一定次數之後,如果還沒有正常獲取到要使用的物件,此時就會把鎖從輕量級升級為重量級鎖,此過程就構成了 synchronized 鎖的升級。

    鎖的升級的目的:鎖升級是為了減低了鎖帶來的效能消耗。在 Java 6 之後最佳化 synchronized 的實現方式,使用了偏向鎖升級為輕量級鎖再升級到重量級鎖的方式,從而減低了鎖帶來的效能消耗。

  • 中秋節和大豐收的關聯?
  • 凝視藝術是一種怎樣的體驗呢?