- 目標:共享的可變的狀態訪問
- 解決的手段:
- synchronized
- volatile
- 顯示鎖
- 原子變數
- 先保證正確,再保證效能
- 什麼是執行緒安全的:當多個執行緒訪問某個類時,這個類始終都能便顯出正確的行為
- 無狀態物件一定是執行緒安全的(all區域性變數)
- 競爭條件:基於一種可能失效的觀察結果來做出判斷或者某個計算,"先檢查後執行"
- 計數器:院子類
- 快取一個key的value,得使用鎖,保證原子性
- 用鎖來保護狀態: 如果用同步來協調對某個變數的訪問那麼訪問這個變數的所有位置上都需要使用同步
- 雖然synchronized方法可以保證單個操作的原子性,但如果把多個操作合併為一個複合操作,還是需要額外的加鎖機制
- 使用兩種不同的同步機制不僅會帶來混亂,也不會在效能或者安全性上帶來任何好處,因此這裡不使用原子變數
- 在執行較長的方法上不要加鎖,例如io操作,或者比較重的計算操作
java併發變成實戰讀書筆記(1,2章節)
相關文章
- 《Java8實戰》-讀書筆記第二章Java筆記
- 《Java8實戰》-讀書筆記第一章(01)Java筆記
- 《Java8實戰》-讀書筆記第一章(02)Java筆記
- Java 併發程式設計實踐 讀書筆記四Java程式設計筆記
- 《Java8實戰》-第四章讀書筆記(引入流Stream)Java筆記
- 《Java8實戰》-第三章讀書筆記(Lambda表示式-01)Java筆記
- 《Java8實戰》-第三章讀書筆記(Lambda表示式-02)Java筆記
- 《Java8實戰》-第五章讀書筆記(使用流Stream-02)Java筆記
- 【讀書筆記】Java併發程式設計的藝術筆記Java程式設計
- 【Java併發程式設計的藝術】第二章讀書筆記之原子操作Java程式設計筆記
- 《Maven實戰》之讀書筆記Maven筆記
- 《Java8實戰》-第六章讀書筆記(用流收集資料-01)Java筆記
- 《Java8實戰》-第六章讀書筆記(用流收集資料-02)Java筆記
- CSAPP 併發程式設計讀書筆記APP程式設計筆記
- 《實戰 Java 高併發程式設計》筆記——第2章 Java 並行程式基礎(二)Java程式設計筆記並行行程
- spring boot實戰讀書筆記(1)Spring Boot筆記
- JMeter實戰-全棧效能測試第3、4章讀書筆記JMeter全棧筆記
- 《Spring實戰》讀書筆記 #每日筆記 100-004Spring筆記
- Git改變歷史-章節筆記Git筆記
- 讀書筆記:《Python3網路爬蟲開發實戰》——第2章:爬蟲基礎筆記Python爬蟲
- 【Programming in Lua1-7章】讀書筆記筆記
- 《Go 語言程式設計》讀書筆記 (六) 基於共享變數的併發Go程式設計筆記變數
- Java併發程式設計實戰——讀後感Java程式設計
- 《實戰 Java 高併發程式設計》筆記——第4章 鎖的優化及注意事項(二)Java程式設計筆記優化
- 《Effective Objective-C 2.0》讀書/實戰筆記 一Object筆記
- 計算機組成與設計 讀書筆記——第三章計算機筆記
- Java併發程式設計實戰筆記3:基礎構建模組Java程式設計筆記
- 《Head First Java》20201017讀書筆記Java筆記
- 《Head First Java》20200927讀書筆記Java筆記
- 《Head First Java》20201009讀書筆記Java筆記
- 讀書筆記:從Lucene到Elasticsearch:全文檢索實戰筆記Elasticsearch
- MySQL 8.0 Reference Manual(讀書筆記68節--Deadlocks)MySql筆記
- MySQL 8.0 Reference Manual(讀書筆記90節--Replication)MySql筆記
- 《資料分析實戰-托馬茲.卓巴斯》讀書筆記第2章-變數分佈與相關性、圖表筆記變數
- 《Selenium2自動化測試實戰基於Python語言》讀書筆記--第3章Python筆記
- Selenium2自動化測試實戰基於Python語言》讀書筆記--第2章Python筆記
- 讀書筆記筆記
- 《每個人的戰爭》讀書筆記筆記