知道synchronized原理嗎?

synchronized是java提供的原?性內(nèi)置鎖拇涤,這種內(nèi)置的并且使?者看不到的鎖也被稱為監(jiān)視器鎖娘荡,使?synchronized之后灭翔,會在編譯之后在同步的代碼塊前后加上monitorenter和monitorexit字節(jié)碼指令隙咸,它依賴操作系統(tǒng)底層互斥鎖實(shí)現(xiàn)账千。它的作?主要就是實(shí)現(xiàn)原?性操作和解決共享變量的內(nèi)存可?性問題汞贸。

執(zhí)?monitorenter指令時會嘗試獲取對象鎖绳军,如果對象沒有被鎖定或者已經(jīng)獲得了鎖印机,鎖的計(jì)數(shù)器+1。此時其他競爭鎖的線程則會進(jìn)?等待隊(duì)列中门驾。執(zhí)?monitorexit指令時則會把計(jì)數(shù)器-1射赛,當(dāng)計(jì)數(shù)器值為0時,則鎖釋放奶是,處于等待隊(duì)列中的線程再繼續(xù)競爭鎖楣责。

synchronized是排它鎖,當(dāng)?個線程獲得鎖之后聂沙,其他線程必須等待該線程釋放鎖后才能獲得鎖秆麸,?且由于Java中的線程和操作系統(tǒng)原?線程是??對應(yīng)的,線程被阻塞或者喚醒時時會從?戶態(tài)切換到內(nèi)核態(tài)及汉,這種轉(zhuǎn)換?常消耗性能沮趣。

從內(nèi)存語義來說,加鎖的過程會清除?作內(nèi)存中的共享變量坷随,再從主內(nèi)存讀取房铭,?釋放鎖的過程則是將?作內(nèi)存中的共享變量寫回主內(nèi)存。實(shí)際上?部分時候我認(rèn)為說到monitorenter就?了温眉,但是為了更清楚的描述缸匪,還是再具體?點(diǎn)。

如果再深?到源碼來說类溢,synchronized實(shí)際上有兩個隊(duì)列waitSet和entryList豪嗽。

1. 當(dāng)多個線程進(jìn)?同步代碼塊時,?先進(jìn)?entryList

2. 有?個線程獲取到monitor鎖后豌骏,就賦值給當(dāng)前線程龟梦,并且計(jì)數(shù)器+1

3. 如果線程調(diào)?wait?法,將釋放鎖窃躲,當(dāng)前線程置為null计贰,計(jì)數(shù)器-1,同時進(jìn)?waitSet等待被喚醒蒂窒,調(diào)?notify或者notifyAll之后?會進(jìn)?entryList競爭鎖

4. 如果線程執(zhí)?完畢躁倒,同樣釋放鎖,計(jì)數(shù)器-1洒琢,當(dāng)前線程置為null

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末秧秉,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子衰抑,更是在濱河造成了極大的恐慌象迎,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異砾淌,居然都是意外死亡啦撮,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進(jìn)店門汪厨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赃春,“玉大人,你說我怎么就攤上這事劫乱≈校” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵衷戈,是天一觀的道長狭吼。 經(jīng)常有香客問我,道長脱惰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任窿春,我火速辦了婚禮拉一,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘旧乞。我一直安慰自己蔚润,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布尺栖。 她就那樣靜靜地躺著嫡纠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪延赌。 梳的紋絲不亂的頭發(fā)上除盏,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天,我揣著相機(jī)與錄音挫以,去河邊找鬼者蠕。 笑死,一個胖子當(dāng)著我的面吹牛掐松,可吹牛的內(nèi)容都是我干的踱侣。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼大磺,長吁一口氣:“原來是場噩夢啊……” “哼抡句!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起杠愧,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤待榔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后流济,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體究抓,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡猾担,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了刺下。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绑嘹。...
    茶點(diǎn)故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖橘茉,靈堂內(nèi)的尸體忽然破棺而出工腋,到底是詐尸還是另有隱情,我是刑警寧澤畅卓,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布擅腰,位于F島的核電站,受9級特大地震影響翁潘,放射性物質(zhì)發(fā)生泄漏趁冈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一拜马、第九天 我趴在偏房一處隱蔽的房頂上張望渗勘。 院中可真熱鬧,春花似錦俩莽、人聲如沸旺坠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽取刃。三九已至,卻和暖如春出刷,著一層夾襖步出監(jiān)牢的瞬間璧疗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工馁龟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留病毡,地道東北人。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓屁柏,卻偏偏與公主長得像啦膜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子淌喻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內(nèi)容