目錄
# 併發與並行
- 併發指的是程序的結構,而後者值得是程序運行時的狀態
- 併發是指一個處理器同時處理多個任務;並行是指多個處理器或者是多核的處理器同時處理多個不同的任務。
- 併發是讓多個任務在邏輯上交織執行的程序設計;並行是在物理上一起執行。
- 併發:時間片內有很多的線程以以及進程在執行,但任何一個時間點只有一個在執行;多個線程競爭一個資源; 並行是時間片與時間點都有多個線程或者進程在執行
- 單個CPU只能做到併發,多核CPU纔可以做到並行。
# 線程與進程
進程是操作系統進行資源分配與調度的一個獨立單元,是應用程序運行的載體
線程是程序執行流的最小單位,是處理器調度以及分派的基本單位
進程由多個線程組成;線程是一個進程中代碼的不同執行路線;進程之間互相獨立,同一個進程中的線程之間共享程序的內容以及進程級別的資源。
#線程狀態
#JAVA內存
JVM基本結構圖:
java內部模型:
#線程安全
線程安全問題 VS 資源共享問題
線程安全產生的根本原因是共享數據存在被併發修改的可能,即一個線程讀取時,允許另一個線程修改。
如果有兩以上的線程同時訪問同一個共享資源,可能造成線程衝突,線程衝突會造成數據丟失、重複等嚴重問題。