深入理解java虛擬機(jī)-第13章-線程安全與鎖優(yōu)化
線程安全
java語(yǔ)言中的線程安全
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ì)象本身不是線程安全的,但是可以通過(guò)在調(diào)用端正確地使用同步手段來(lái)保證對(duì)象在并發(fā)環(huán)境中可以安全使用
5 線程對(duì)立
線程安全的實(shí)現(xiàn)方法
1 互斥同步 Murual Exclusion & Synchronization
常見(jiàn)的并發(fā)正確性保障手機(jī),同步是指多個(gè)線程并發(fā)訪問(wèn)共享數(shù)據(jù)時(shí),保存證共享數(shù)據(jù)在同一時(shí)刻只被一個(gè)線程使用
最基本的互斥手段是synchronized關(guān)鍵字。
還可以使用java.util.concurrent包中的鎖來(lái)實(shí)現(xiàn)同步 ReentrantLock,
JDK1.6對(duì)synchronized做了優(yōu)化,效率與ReentrantLock基本上是完全持平了。
2 非阻塞同步
基于沖突檢測(cè)的樂(lè)觀并發(fā)策略
CAS操作 Compare-and-Swap
3 無(wú)同步方案
鎖優(yōu)化
1、自旋鎖與自適應(yīng)自旋
2、鎖消除
3、鎖粗化
4、經(jīng)量級(jí)鎖
5、偏向鎖
整本書(shū) 可以在Blog :《深入理解Java虛擬機(jī)》筆記 中來(lái)統(tǒng)查看要點(diǎn)。
相關(guān)文章:
1. JavaScript實(shí)現(xiàn)留言板實(shí)戰(zhàn)案例2. vscode運(yùn)行php報(bào)錯(cuò)php?not?found解決辦法3. 如何在python中執(zhí)行另一個(gè)py文件4. Python基于requests庫(kù)爬取網(wǎng)站信息5. 如何從Python的cmd中獲得.py文件參數(shù)6. 資深程序員:給Python軟件開(kāi)發(fā)測(cè)試的25個(gè)忠告!7. 使用Blazor框架實(shí)現(xiàn)在前端瀏覽器中導(dǎo)入和導(dǎo)出Excel8. python中文本字符處理的簡(jiǎn)單方法記錄9. ASP基礎(chǔ)知識(shí)Command對(duì)象講解10. Python-openpyxl表格讀取寫入的案例詳解

網(wǎng)公網(wǎng)安備