鎖得膨脹:
膨脹方向:無鎖->偏向鎖->輕量級鎖->重量級鎖
無鎖:
沒有鎖或者不加鎖的情況雁歌。
偏向鎖:
適用于只有一個線程訪問同步塊 ,對象頭中的markword關(guān)鍵字指向?qū)?yīng)當前線程id.并修改標志位,再次進入或退出不再進行CAS操作.不消耗額外cpu資源,所以速度快昆雀。
輕量級鎖:
適應(yīng)線程交替執(zhí)行同步塊的過程。輕度沖突蝠筑,當進入代碼塊時狞膘,發(fā)現(xiàn)對象頭markword中的線程id不是自己,然后嘗試使用CAS進行修改什乙,由于自旋會消耗大量cpu資源挽封,因此如果經(jīng)過一段時間還沒有獲取到對象鎖,后會升級為重量級鎖臣镣。
重量級鎖:
適應(yīng)于多個線程同時訪問一個同步塊的情況场仲,對象會進入鎖池進行等待,直到資源占用著執(zhí)行完退疫,再次進行競爭