培訓(xùn)啦 Java

Java編程入門要學(xué)什么?怎么掌握鎖優(yōu)化知識(shí)?

教培參考

教育培訓(xùn)行業(yè)知識(shí)型媒體

發(fā)布時(shí)間: 2024年12月23日 11:40

2025年【Java】報(bào)考條件/培訓(xùn)費(fèi)用/專業(yè)咨詢 >>

Java報(bào)考條件是什么?Java培訓(xùn)費(fèi)用是多少?Java專業(yè)課程都有哪些?

點(diǎn)擊咨詢
Java編程入門要學(xué)什么?怎么掌握鎖優(yōu)化知識(shí)?所謂“鎖優(yōu)化”是指在并發(fā)環(huán)境下進(jìn)行編程時(shí),降低加鎖所帶來的性能上的損壞。規(guī)范加鎖的操作、優(yōu)化鎖的使用方法、避免不必要的線程競爭,不僅可以提高程序性能,也能避免不規(guī)范加鎖可能造成線程死鎖問題,提高程序健壯性。下面就給大家分享一下Java編程入門學(xué)習(xí)中有關(guān)鎖優(yōu)化的知識(shí)。

常見的鎖的類型有偏向鎖、自旋鎖、輕量級(jí)鎖和重量級(jí)鎖四種,不同的鎖有不同的適合場景。比如偏向鎖適用于只有一個(gè)線程訪問同步塊場景;輕量級(jí)鎖適合追求響應(yīng)時(shí)間,鎖占用時(shí)間很短的場景;重量級(jí)鎖適用于追求吞吐量,鎖占用時(shí)間較長的場景。

在編碼過程中可以采取的鎖優(yōu)化思路主要有五種:

1、減少鎖持有時(shí)間。對一個(gè)方法加鎖,不如對方法中需要同步的幾行代碼加鎖;

2、減小鎖粒度。比如ConcurrentHashMap采取對segment加鎖而不是整個(gè)map加鎖,提高并發(fā)性;

3、鎖分離。根據(jù)同步操作的性質(zhì),把鎖劃分為的讀鎖和寫鎖,讀鎖之間不互斥,提高了并發(fā)性。

4、鎖粗化。在一個(gè)間隔性地需要執(zhí)行同步語句的線程中,如果在不連續(xù)的同步塊間頻繁加鎖解鎖是很耗性能的,因此把加鎖范圍擴(kuò)大,把這些不連續(xù)的同步語句進(jìn)行一次性加鎖解鎖。雖然線程持有鎖的時(shí)間增加了,但是總體來說是優(yōu)化了的。

5、鎖消除。鎖消除是編譯器做的事:根據(jù)代碼逃逸技術(shù),如果判斷到一段代碼中,堆上的數(shù)據(jù)不會(huì)逃逸出當(dāng)前線程(即不會(huì)影響線程空間外的數(shù)據(jù)),那么可以認(rèn)為這段代碼是線程安全的,不必要加鎖。

?  如果你想了解更多Java基礎(chǔ)方面的知識(shí)點(diǎn),你可以選擇專業(yè)學(xué)習(xí)一下,讓自己快速從基礎(chǔ)到不斷進(jìn)階,做企業(yè)高薪競聘的精英。

985大學(xué) 211大學(xué) 全國院校對比 專升本

溫馨提示:
本文【Java編程入門要學(xué)什么?怎么掌握鎖優(yōu)化知識(shí)?】由作者教培參考提供。該文觀點(diǎn)僅代表作者本人,培訓(xùn)啦系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)空間服務(wù),若存在侵權(quán)問題,請及時(shí)聯(lián)系管理員或作者進(jìn)行刪除。
我們采用的作品包括內(nèi)容和圖片部分來源于網(wǎng)絡(luò)用戶投稿,我們不確定投稿用戶享有完全著作權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》,如果侵犯了您的權(quán)利,請聯(lián)系我站將及時(shí)刪除。
內(nèi)容侵權(quán)、違法和不良信息舉報(bào)
Copyright @ 2024 培訓(xùn)啦 All Rights Reserved 版權(quán)所有. 湘ICP備2022011548號(hào) 美國留學(xué) 留求藝