深入理解java虛擬機(jī)-第13章-線程安全與鎖優(yōu)化
線程安全
java語言中的線程安全
1 不可變。Immutable 的對(duì)象一定是線程安全的
2 絕對(duì)線程安全 一個(gè)類要達(dá)到不管運(yùn)行時(shí)環(huán)境如何,調(diào)用者都不需要額外的同步措施,通常需要付出很大甚至是不切實(shí)際的代價(jià),在java api中標(biāo)注自己是線程安全的類,大多數(shù)都不是絕對(duì)的線程安全
3 相對(duì)線程安全
4 線程兼容 對(duì)象本身不是線程安全的,但是可以通過在調(diào)用端正確地使用同步手段來保證對(duì)象在并發(fā)環(huán)境中可以安全使用
5 線程對(duì)立
線程安全的實(shí)現(xiàn)方法
1 互斥同步 Murual Exclusion & Synchronization
常見的并發(fā)正確性保障手機(jī),同步是指多個(gè)線程并發(fā)訪問共享數(shù)據(jù)時(shí),保存證共享數(shù)據(jù)在同一時(shí)刻只被一個(gè)線程使用
最基本的互斥手段是synchronized關(guān)鍵字。
還可以使用java.util.concurrent包中的鎖來實(shí)現(xiàn)同步 ReentrantLock,
JDK1.6對(duì)synchronized做了優(yōu)化,效率與ReentrantLock基本上是完全持平了。
2 非阻塞同步
基于沖突檢測的樂觀并發(fā)策略
CAS操作 Compare-and-Swap
3 無同步方案
鎖優(yōu)化
1、自旋鎖與自適應(yīng)自旋
2、鎖消除
3、鎖粗化
4、經(jīng)量級(jí)鎖
5、偏向鎖
整本書 可以在Blog :《深入理解Java虛擬機(jī)》筆記 中來統(tǒng)查看要點(diǎn)。
相關(guān)文章:
1. HTML <!DOCTYPE> 標(biāo)簽2. 5個(gè)HTML5的常用本地存儲(chǔ)方式詳解與介紹3. asp在iis7報(bào)錯(cuò)行號(hào)不準(zhǔn)問題的解決方法4. asp批量添加修改刪除操作示例代碼5. 告別AJAX實(shí)現(xiàn)無刷新提交表單6. msxml3.dll 錯(cuò)誤 800c0019 系統(tǒng)錯(cuò)誤:-2146697191解決方法7. HTML中的XML數(shù)據(jù)島記錄編輯與添加8. CSS代碼檢查工具stylelint的使用方法詳解9. 三個(gè)不常見的 HTML5 實(shí)用新特性簡介10. 原生js XMLhttprequest請(qǐng)求onreadystatechange執(zhí)行兩次的解決
