大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

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

JVM鎖優(yōu)化

鎖偏向

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

鎖偏向在沒有鎖競爭的場合可以有較好的優(yōu)化效果,對于鎖競爭 比較激烈的場景,效果不佳, 鎖競爭激烈的情況下可能是每次都是不同的線程來請求鎖,這時偏向模式失效。

量級鎖

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

偏向鎖,輕量級鎖都是樂觀鎖,重量級鎖是悲觀鎖。

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

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

自旋鎖

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

鎖消除

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

全部教程
主站蜘蛛池模板: 久久9966精品国产免费 | 激情99 | 一级bbbbbbbbb毛片 | 久草在线免费看 | 婷婷伊人五月 | xxxwww欧美| 毛片毛片毛片毛片 | 欧美艹逼视频 | 成人国产精品一级毛片天堂 | 久久www免费人成_看片美女图 | 亚洲久草视频 | 免费香蕉成视频成人网 | 亚州中文字幕 | 日韩a无吗一区二区三区 | 久久精品亚洲牛牛影视 | 国产精品久久久久一区二区三区 | 夜夜爽天天狠狠九月婷婷 | 日韩在线网 | 久久最新免费视频 | 日韩久久一区二区三区 | 日本爽快片100色毛片 | 每日更新国产精品视频 | 国产精品福利影院 | 成人国产午夜在线视频 | 久久国产精品免费 | 免费看羞羞视频的网站 | 亚洲一区成人 | 一区二区三区在线观看免费 | 国产欧美精品一区二区 | 狠狠色欧美亚洲狠狠色五 | 日本α级毛片视频免费观看 | 国产精品视频免费 | 日本久久久久一级毛片 | 国产精品久久久久久五月尺 | 天天碰免费视频 | 亚洲欧洲视频在线 | 成人国产亚洲欧美成人综合网 | 亚洲精品在线网 | 免费精品一区二区三区在线观看 | 日韩一区二区不卡 | 夜夜夜夜夜夜夜猛噜噜噜噜噜噜 |