江疏影讀書系列之Java併發程式設計實戰(第一章 簡介)
欲速則不達,欲達則欲速!
12年畢業,化工、零售。16年轉行,Java培訓五個月,17年1月,我人生中最悲慘的一個月,找工作處處碰壁,啥也不會,欲哭無淚...
轉眼間,以程式設計師的身份工作兩年半了,一路走來,跌跌拌拌,漫天的噓聲,都無所謂,依舊擋不住我前進的步伐。
本系列是《Java併發程式設計實戰》的讀書筆記,方便自己查閱。
第一章 簡介
一、為什麼要使用執行緒編寫併發程式?
1、它們能使複雜的非同步程式碼變得更簡單,從而極大地簡化了複雜系統的開發。
2、充分發揮多核處理器的強大計算能力。
二、併發簡史
1、計算機中加入作業系統來實現同時執行多個程式,並且不同的程式都在單獨的程序中執行:作業系統為各個獨立的程序分配各種資源,包括記憶體,檔案控制代碼以及安全證書等。如果需要的話,在不同程序之間可以通過一些粗粒度的通訊機制來交換資料,包括套接字、訊號處理器、共享記憶體、訊號量以及檔案。
① 資源利用率,等待IO的同時可以執行另一個程式
② 公平性,時間分片同等的使用和共享計算機資源
③ 便利性
2、執行緒的優勢
如果使用得當,執行緒可以有效地降低程式的開發和維護等成本,同時提升複雜應用程式的效能,執行緒能夠將大部分的非同步工作流轉換成序列工作流。
在GUI(圖形使用者介面)應用程式中,執行緒可以提高使用者介面的響應靈敏度,而在伺服器應用程式中,可以提升資源利用率以及系統吞吐率。執行緒還簡化JVM的實現,垃圾回收機制通常在一個或多個執行緒中執行。
3、建模的簡單性
4、執行緒帶來的風險
① 安全性問題
由於多個執行緒要共享相同的記憶體地址空間,並且併發執行,因此它們可能會訪問或修改其它執行緒正在使用的變數。
② 活躍性問題
死鎖、飢餓、活鎖等
③ 效能問題
效能問題主要包括服務時間過長、響應不靈敏、吞吐率過低、資源消耗過高、可