黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

Java多線程編程概述
Java多線程的安全問(wèn)題
Java多線程同步
Java多線程間的通信
Java線程Lock
Java多線程管理
保障線程安全的設(shè)計(jì)技術(shù)
Java鎖的優(yōu)化及注意事項(xiàng)
Java多線程集合
【Java多線程】單例模式與多線程

JVM鎖優(yōu)化

鎖偏向

鎖偏向是一種針對(duì)加鎖操作的優(yōu)化,如果一個(gè)線程獲得了鎖,那么鎖就進(jìn)入偏向模式, 當(dāng)這個(gè)線程再次請(qǐng)求鎖時(shí),無(wú)須再做任何同步操作,這樣可以節(jié)省有關(guān)鎖申請(qǐng)的時(shí)間,提高了程序的性能。

鎖偏向在沒(méi)有鎖競(jìng)爭(zhēng)的場(chǎng)合可以有較好的優(yōu)化效果,對(duì)于鎖競(jìng)爭(zhēng) 比較激烈的場(chǎng)景,效果不佳, 鎖競(jìng)爭(zhēng)激烈的情況下可能是每次都是不同的線程來(lái)請(qǐng)求鎖,這時(shí)偏向模式失效。

量級(jí)鎖

如果鎖偏向失敗,JVM不會(huì)立即掛起線程,還會(huì)使用一種稱(chēng)為輕量級(jí)鎖的優(yōu)化手段. 會(huì)將對(duì)象的頭部作為指針,指向持有鎖的線程堆棧內(nèi)部, 來(lái)判斷一個(gè)線程是否持有對(duì)象鎖. 如果線程獲得輕量級(jí)鎖成功,就進(jìn)入臨界區(qū). 如果獲得輕量級(jí)鎖失敗,表示其他線程搶到了鎖,那么當(dāng)前線程的鎖的請(qǐng)求就膨脹為重量級(jí)鎖.當(dāng)前線程就轉(zhuǎn)到阻塞隊(duì)列中變?yōu)樽枞麪顟B(tài)。

偏向鎖,輕量級(jí)鎖都是樂(lè)觀鎖,重量級(jí)鎖是悲觀鎖。

一個(gè)對(duì)象剛開(kāi)始實(shí)例化時(shí),沒(méi)有任何線程訪問(wèn)它,它是可偏向的,即它認(rèn)為只可能有一個(gè)線程來(lái)訪問(wèn)它,所以當(dāng)?shù)谝粋€(gè)線程來(lái)訪問(wèn)它的時(shí)候,它會(huì)偏向這個(gè)線程. 偏向第一個(gè)線程,這個(gè)線程在修改對(duì)象頭成為偏向鎖時(shí)使用CAS操作,將對(duì)象頭中ThreadId改成自己的ID,之后再訪問(wèn)這個(gè)對(duì)象時(shí),只需要對(duì)比ID即可. 一旦有第二個(gè)線程訪問(wèn)該對(duì)象,因?yàn)槠蜴i不會(huì)主動(dòng)釋放,所以第二個(gè)線程可以查看對(duì)象的偏向狀態(tài),當(dāng)?shù)诙€(gè)線程訪問(wèn)對(duì)象時(shí),表示在這個(gè)對(duì)象上已經(jīng)存在競(jìng)爭(zhēng)了,檢查原來(lái)持有對(duì)象鎖的線程是否存活,如果掛了則將對(duì)象變?yōu)闊o(wú)鎖狀態(tài),然后重新偏向新的線程; 如果原來(lái)的線程依然存活,則馬上執(zhí)行原來(lái)線程的棧,檢查該對(duì)象的使用情況,如果仍然需要偏向鎖,則偏向鎖升級(jí)為輕量級(jí)鎖。

輕量級(jí)鎖認(rèn)為競(jìng)爭(zhēng)存在,但是競(jìng)爭(zhēng)的程度很輕,一般兩個(gè)線程對(duì)同一個(gè)鎖的操作會(huì)錯(cuò)開(kāi),或者稍微等待一下(自旋)另外一個(gè)線程就會(huì)釋放鎖. 當(dāng)自旋超過(guò)一定次數(shù),或者一個(gè)線程持有鎖,一個(gè)線程在自旋,又來(lái)第三個(gè)線程訪問(wèn)時(shí), 輕量級(jí)鎖會(huì)膨脹為重量級(jí)鎖, 重量級(jí)鎖除了持有鎖的線程外,其他的線程都阻塞。

自旋鎖

鎖膨脹后,JVM為了避免線程在真實(shí)的層面被掛起,JVM還會(huì)做最后的努力,這就是自旋鎖. 當(dāng)前線程無(wú)法立即獲得鎖,但是在什么時(shí)候可以獲得鎖也不一定, 也許在幾個(gè)CPU周期后就可以得到鎖, 如果是這樣的話,簡(jiǎn)單的將線程掛起可能是一種得不償失的操作. 因此JVM會(huì)進(jìn)行一次賭注: JVM期望在不久的將來(lái)可以得到鎖. 因?yàn)镴VM會(huì)讓當(dāng)前的線程做幾個(gè)空循環(huán),在經(jīng)過(guò)若干次循環(huán)后,如果可以得到鎖就進(jìn)入臨界區(qū),如果還不能得到鎖則將線程真實(shí)的掛起。

鎖消除

鎖消除是一種更徹底的鎖優(yōu)化, JVM在JIT編譯時(shí),會(huì)通過(guò)掃描上下文,去除不可能存在共享資源競(jìng)爭(zhēng)的鎖, 通過(guò)鎖消除,可以節(jié)省毫無(wú)意義的請(qǐng)求鎖時(shí)間。

全部教程
主站蜘蛛池模板: 青青草国产97免久久费观看 | 在线观看国产日本 | 福利成人| 伊人久久亚洲综合天堂 | 日韩伦理中文字幕 | 亚欧精品一区二区三区四区 | 夭天曰天天躁天天摸在线观看 | 国产成人综合视频 | 亚洲精品高清久久 | 老司机在线永久免费视频观看 | 久久在现| 国产在线一卡二卡 | 欧美18一19sex性hd | 国产成人精品亚洲2020 | 最近中文字幕免费mv视频8 | 亚洲大片在线观看 | 免费黄网站在线观看 | 丁香婷婷六月 | 国产香蕉国产精品偷在线观看 | 青青草国产精品久久 | 98精品国产高清在线xxxx | 性激烈的欧美三级高清视频 | www.狠狠| 欧美激情精品久久久久久不卡 | 全黄一级裸片视频免费 | 国产精品免费大片 | 青青草国产精品人人爱99 | 亚洲欧美一区二区三区久本道 | 在线观看男女爱视频网站 | 亚洲不卡一区二区三区 | 日韩亚洲欧美在线 | 日本中文字幕在线视频 | 午夜免费视频 | 老湿影院免费体验区 | 一区二区不卡不卡一卡 | 亚洲人jizz | 国内国语一级毛片在线视频 | 91麻豆精品视频 | 国产精品视频免费的 | 午夜激情影院 | 国产日韩高清一区二区三区 |