.

欲速則不達,欲達則欲速!

12年畢業,化工、零售。16年轉行,Java培訓五個月,17年1月,我人生中最悲慘的一個月,找工作處處碰壁,啥也不會,欲哭無淚...

轉眼間,以程式設計師的身份工作兩年半了,一路走來,跌跌拌拌,漫天的噓聲,都無所謂,依舊擋不住我前進的步伐。

本系列是《Java併發程式設計實戰》的讀書筆記,方便自己查閱。

第一章 簡介

一、為什麼要使用執行緒編寫併發程式?

1、它們能使複雜的非同步程式碼變得更簡單,從而極大地簡化了複雜系統的開發。

2、充分發揮多核處理器的強大計算能力。

二、併發簡史

1、計算機中加入作業系統來實現同時執行多個程式,並且不同的程式都在單獨的程序中執行:作業系統為各個獨立的程序分配各種資源,包括記憶體,檔案控制代碼以及安全證書等。如果需要的話,在不同程序之間可以通過一些粗粒度的通訊機制來交換資料,包括套接字、訊號處理器、共享記憶體、訊號量以及檔案。

① 資源利用率,等待IO的同時可以執行另一個程式
② 公平性,時間分片同等的使用和共享計算機資源
③ 便利性

2、執行緒的優勢

如果使用得當,執行緒可以有效地降低程式的開發和維護等成本,同時提升複雜應用程式的效能,執行緒能夠將大部分的非同步工作流轉換成序列工作流。

在GUI(圖形使用者介面)應用程式中,執行緒可以提高使用者介面的響應靈敏度,而在伺服器應用程式中,可以提升資源利用率以及系統吞吐率。執行緒還簡化JVM的實現,垃圾回收機制通常在一個或多個執行緒中執行。

3、建模的簡單性

4、執行緒帶來的風險

① 安全性問題

由於多個執行緒要共享相同的記憶體地址空間,並且併發執行,因此它們可能會訪問或修改其它執行緒正在使用的變數。

② 活躍性問題

死鎖、飢餓、活鎖等

③ 效能問題

效能問題主要包括服務時間過長、響應不靈敏、吞吐率過低、資源消耗過高、可