- 目標:共享的可變的狀態訪問
- 解決的手段:
- synchronized
- volatile
- 顯示鎖
- 原子變數
- 先保證正確,再保證效能
- 什麼是執行緒安全的:當多個執行緒訪問某個類時,這個類始終都能便顯出正確的行為
- 無狀態物件一定是執行緒安全的(all區域性變數)
- 競爭條件:基於一種可能失效的觀察結果來做出判斷或者某個計算,"先檢查後執行"
- 計數器:院子類
- 快取一個key的value,得使用鎖,保證原子性
- 用鎖來保護狀態: 如果用同步來協調對某個變數的訪問那麼訪問這個變數的所有位置上都需要使用同步
- 雖然synchronized方法可以保證單個操作的原子性,但如果把多個操作合併為一個複合操作,還是需要額外的加鎖機制
- 使用兩種不同的同步機制不僅會帶來混亂,也不會在效能或者安全性上帶來任何好處,因此這裡不使用原子變數
- 在執行較長的方法上不要加鎖,例如io操作,或者比較重的計算操作
java併發變成實戰讀書筆記(1,2章節)
相關文章
- Java併發程式設計實戰--讀書筆記(目錄)Java程式設計筆記
- java併發程式設計實戰筆記(部分實戰未看,老舊章節跳過)Java程式設計筆記
- 《Java8實戰》-讀書筆記第二章Java筆記
- Java 併發程式設計實踐 讀書筆記四Java程式設計筆記
- 《Java8實戰》-讀書筆記第一章(01)Java筆記
- 《Java8實戰》-讀書筆記第一章(02)Java筆記
- 【Java併發程式設計的藝術】第一章讀書筆記Java程式設計筆記
- 【讀書筆記】Java併發機制的底層實現原理筆記Java
- Java程式設計思想讀書筆記一:併發Java程式設計筆記
- Effective Java讀書筆記一:併發(66-73)Java筆記
- 《Java8實戰》-第四章讀書筆記(引入流Stream)Java筆記
- 《Java8實戰》-第五章讀書筆記(使用流Stream-02)Java筆記
- 《Java8實戰》-第三章讀書筆記(Lambda表示式-01)Java筆記
- 《Java8實戰》-第三章讀書筆記(Lambda表示式-02)Java筆記
- 【讀書筆記】Java併發程式設計的藝術筆記Java程式設計
- Java併發程式設計實戰--筆記三Java程式設計筆記
- Java併發程式設計實戰--筆記四Java程式設計筆記
- Java併發程式設計實戰--筆記二Java程式設計筆記
- Java併發程式設計實戰--筆記一Java程式設計筆記
- 《Maven實戰》之讀書筆記Maven筆記
- 【Java併發程式設計的藝術】第二章讀書筆記之原子操作Java程式設計筆記
- 《Java8實戰》-第六章讀書筆記(用流收集資料-01)Java筆記
- 《Java8實戰》-第六章讀書筆記(用流收集資料-02)Java筆記
- 《實戰 Java 高併發程式設計》筆記——第2章 Java 並行程式基礎(二)Java程式設計筆記並行行程
- JMeter實戰-全棧效能測試第3、4章讀書筆記JMeter全棧筆記
- Python讀書筆記:細節決定成敗(2)Python筆記
- Python讀書筆記:細節決定成敗(1)Python筆記
- CSAPP 併發程式設計讀書筆記APP程式設計筆記
- spring boot實戰讀書筆記(1)Spring Boot筆記
- 我的《機器學習實戰》讀書筆記(3)機器學習筆記
- 我的《機器學習實戰》讀書筆記(2)機器學習筆記
- 《IBM BPM實戰指南》讀書筆記IBM筆記
- Git改變歷史-章節筆記Git筆記
- 《Effective C++》第5章 實現-讀書筆記C++筆記
- Effective Java 讀書筆記Java筆記
- 《Spring實戰》讀書筆記 #每日筆記 100-004Spring筆記
- Java併發程式設計實戰——讀後感Java程式設計
- 《Go 語言程式設計》讀書筆記 (六) 基於共享變數的併發Go程式設計筆記變數