synchronized實(shí)現(xiàn)的個(gè)人體會(huì)

1、synchronized同步關(guān)鍵字總述

jdk1.5之前 synchronized的同步依靠的是系統(tǒng)內(nèi)核的互斥同步實(shí)現(xiàn)的。對(duì)于阻塞的實(shí)現(xiàn)需要在內(nèi)核中完成線程的掛起和恢復(fù)。嚴(yán)重影響了同步的并發(fā)性能
在jdk1.6實(shí)現(xiàn)了很多鎖優(yōu)化技術(shù)。如自旋鎖,鎖消除,鎖粗化,輕量鎖,和偏向鎖。

2、簡(jiǎn)述自旋鎖,鎖消除,鎖粗化,輕量鎖,和偏向鎖
(1)自旋鎖

原理其實(shí)就是一個(gè)忙循環(huán),循環(huán)等待。這種操作占用cpu時(shí)鐘,在長(zhǎng)時(shí)間阻塞中會(huì)影響計(jì)算機(jī)性能。所有jvm設(shè)置的是10個(gè)忙循環(huán)為獲得鎖會(huì)轉(zhuǎn)入重量鎖及互斥同步。忙循環(huán)次數(shù)可以自己用指令設(shè)置-XX:PreBlockSpin

(2)鎖消除

鎖消除jvm編譯時(shí),判斷有些代碼不需要同步的會(huì)自動(dòng)去掉同步鎖,以免造成浪費(fèi)

(3)鎖粗化

鎖粗化 在一個(gè)循環(huán)內(nèi)加鎖循環(huán)加鎖,jvm編譯時(shí)能夠?qū)㈡i已到循環(huán)外避免鎖重復(fù)

(4)輕量鎖

輕量鎖在沒有并發(fā)競(jìng)爭(zhēng)的時(shí)候使用,獲取鎖時(shí)將對(duì)象頭部的鎖標(biāo)識(shí)設(shè)置為已鎖定。如果有鎖來(lái)競(jìng)爭(zhēng),先使用自旋鎖等待。若在一定次數(shù)內(nèi)未獲得相關(guān)鎖,在轉(zhuǎn)入重量鎖。盡可能的避免互斥鎖的使用,影響并發(fā)性能

(5)偏向鎖

第一次獲取鎖對(duì)象頭設(shè)置為偏向鎖狀態(tài),存入線程id。在無(wú)競(jìng)爭(zhēng)情況下,后續(xù)進(jìn)入該線程無(wú)需任何操作。在有線程來(lái)競(jìng)爭(zhēng)時(shí),取消偏向鎖狀態(tài)后續(xù)操作和輕量鎖類似

?著作權(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)容

  • 我想寫這個(gè)題目很久了,因?yàn)槲冶旧硎且粋€(gè)開朗活潑的人,也就是話多的人,所以,有很多時(shí)候都忘記了耳朵的作用,忘...
    貓咪_小姐閱讀 415評(píng)論 2 2

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