sychronized原理

  1. 偏向鎖
    適合在只有一個(gè)線程執(zhí)行同步代碼時(shí),提升性能
    線程進(jìn)入同步代碼塊是,會(huì)通過(guò)CAS(compare and swap)操作,設(shè)置對(duì)象頭的鎖標(biāo)志位,如果標(biāo)志位的線程id為空,則設(shè)置為當(dāng)前線程id,成功獲得鎖;如果不為空,判斷是否是當(dāng)前線程,如果是,成功獲得鎖,如果不是,說(shuō)明有其它線程訪問(wèn)過(guò),則升級(jí)為輕量級(jí)鎖。
  2. 輕量級(jí)鎖
    適合在兩個(gè)線程交替執(zhí)行的時(shí)候,并發(fā)程度小,提升性能
    jvm在當(dāng)前線程棧幀中設(shè)置鎖記錄,然后通過(guò)CAS操作把對(duì)象頭的輕量級(jí)鎖的指針指向鎖記錄,如果失敗,先檢查是否已獲得鎖,未獲得,則會(huì)自旋,自旋多次后仍然失敗,升級(jí)為重量級(jí)鎖
  3. 重量級(jí)鎖
    適合高并發(fā)的場(chǎng)景
    通過(guò)CAS操作將monitor的owner設(shè)置為當(dāng)前線程,如果成功,獲得鎖,或者重入加1,否則未獲得鎖,線程會(huì)被掛起,在等待隊(duì)列里等待被系統(tǒng)喚醒
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容