深入理解java虛擬機-第13章-線程安全與鎖優(yōu)化
線程安全
java語言中的線程安全
1 不可變。Immutable 的對象一定是線程安全的
2 絕對線程安全 一個類要達(dá)到不管運行時環(huán)境如何,調(diào)用者都不需要額外的同步措施,通常需要付出很大甚至是不切實際的代價,在java api中標(biāo)注自己是線程安全的類,大多數(shù)都不是絕對的線程安全
3 相對線程安全
4 線程兼容 對象本身不是線程安全的,但是可以通過在調(diào)用端正確地使用同步手段來保證對象在并發(fā)環(huán)境中可以安全使用
5 線程對立
線程安全的實現(xiàn)方法
1 互斥同步 Murual Exclusion & Synchronization
常見的并發(fā)正確性保障手機,同步是指多個線程并發(fā)訪問共享數(shù)據(jù)時,保存證共享數(shù)據(jù)在同一時刻只被一個線程使用
最基本的互斥手段是synchronized關(guān)鍵字。
還可以使用java.util.concurrent包中的鎖來實現(xiàn)同步 ReentrantLock,
JDK1.6對synchronized做了優(yōu)化,效率與ReentrantLock基本上是完全持平了。
2 非阻塞同步
基于沖突檢測的樂觀并發(fā)策略
CAS操作 Compare-and-Swap
3 無同步方案
鎖優(yōu)化
1、自旋鎖與自適應(yīng)自旋
2、鎖消除
3、鎖粗化
4、經(jīng)量級鎖
5、偏向鎖
整本書 可以在Blog :《深入理解Java虛擬機》筆記 中來統(tǒng)查看要點。
相關(guān)文章:
1. React+umi+typeScript創(chuàng)建項目的過程2. ASP中常用的22個FSO文件操作函數(shù)整理3. ASP.NET Core 5.0中的Host.CreateDefaultBuilder執(zhí)行過程解析4. SharePoint Server 2019新特性介紹5. .Net core 的熱插拔機制的深入探索及卸載問題求救指南6. 解決ASP中http狀態(tài)跳轉(zhuǎn)返回錯誤頁的問題7. 讀大數(shù)據(jù)量的XML文件的讀取問題8. 三個不常見的 HTML5 實用新特性簡介9. 無線標(biāo)記語言(WML)基礎(chǔ)之WMLScript 基礎(chǔ)第1/2頁10. ASP調(diào)用WebService轉(zhuǎn)化成JSON數(shù)據(jù),附j(luò)son.min.asp
