深入理解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 非阻塞同步
基于沖突檢測(cè)的樂觀并發(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. Java PreparedStatement用法詳解2. 40個(gè)Java集合面試問題和答案3. Java利用TCP協(xié)議實(shí)現(xiàn)客戶端與服務(wù)器通信(附通信源碼)4. django queryset相加和篩選教程5. IDEA 2020.1.2 安裝教程附破解教程詳解6. Spring如何集成ibatis項(xiàng)目并實(shí)現(xiàn)dao層基類封裝7. idea設(shè)置提示不區(qū)分大小寫的方法8. IntelliJ IDEA導(dǎo)出項(xiàng)目的方法9. 利用ajax+php實(shí)現(xiàn)商品價(jià)格計(jì)算10. JS圖片懶加載庫VueLazyLoad詳解

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