文章詳情頁
深入理解java虛擬機-第13章-線程安全與鎖優化
瀏覽:36日期:2022-09-06 11:45:57
線程安全
java語言中的線程安全
1 不可變。Immutable 的對象一定是線程安全的
2 絕對線程安全 一個類要達到不管運行時環境如何,調用者都不需要額外的同步措施,通常需要付出很大甚至是不切實際的代價,在java api中標注自己是線程安全的類,大多數都不是絕對的線程安全
3 相對線程安全
4 線程兼容 對象本身不是線程安全的,但是可以通過在調用端正確地使用同步手段來保證對象在并發環境中可以安全使用
5 線程對立
線程安全的實現方法
1 互斥同步 Murual Exclusion & Synchronization
常見的并發正確性保障手機,同步是指多個線程并發訪問共享數據時,保存證共享數據在同一時刻只被一個線程使用
最基本的互斥手段是synchronized關鍵字。
還可以使用java.util.concurrent包中的鎖來實現同步 ReentrantLock,
JDK1.6對synchronized做了優化,效率與ReentrantLock基本上是完全持平了。
2 非阻塞同步
基于沖突檢測的樂觀并發策略
CAS操作 Compare-and-Swap
3 無同步方案
鎖優化
1、自旋鎖與自適應自旋
2、鎖消除
3、鎖粗化
4、經量級鎖
5、偏向鎖
整本書 可以在Blog :《深入理解Java虛擬機》筆記 中來統查看要點。
標簽:
Java
相關文章:
排行榜