JavaSE之多執行緒
多工執行,多路徑執行
-
優點:
-
提高效能
-
提高效率
-
-
程序與執行緒之間的區別
-
程序:系統中的程式,一個程序之間可以包含1~n個執行緒,系統中資源分配的最小單位,每個程序都有自己的程式碼與資料空間,程序之間的切換開銷較大
-
程式中的順序流,執行緒是cpu排程與執行的最小單位,多個執行緒之間共享程序的程式碼和資料空間,每一個執行緒都有自己的程式計數器執行棧,執行緒之間切換開銷較小,一個cpu同一時刻只能排程一個執行緒
-
-
執行緒學習內容
-
-
建立執行緒的方式 *
-
執行緒的狀態
-
執行緒安全問題 *
-
執行緒通訊
-
-
建立執行緒的方式
-
繼承Thread,重寫run方法 + start開啟執行緒
-
實現Runnable介面,重寫run方法 + start開啟執行緒
-
優點:介面多實現,類的單繼承。實現資源共享
-
重寫方法對異常丟擲的要求:重寫方法上丟擲的異常型別<=被重寫方法上異常的丟擲型別
-
-
實現Callable介面,重寫call方法 + 執行緒池
-
優點:call方法可以丟擲異常,可以定義返回值,run方法不可以
-
-
-
繼承Thread,重寫run方法 + start開啟執行緒
執行緒安全
-
定義:當多個執行緒同時操作同一份資源,才有可能出現執行緒不安全問題
-
同步鎖 synchronized:有可能出現數據不安全的程式碼段,讓多個執行緒排隊執行
-
同步的使用
-
同步條件 : 協調多個執行緒排隊執行的條件 -->物件的鎖
-
同步的程式碼 : 需要多個執行緒排隊執行的程式碼
-
-
synchronized用法
-
修飾方法 : 同步方法
-
同步例項方法
-
條件 : 呼叫成員方法的物件
-
程式碼範圍 : 整個方法體
-
-
同步靜態方法
-
條件 : 鎖類->鎖的類的Class物件->一個類只有一個,載入到記憶體中究存在Class物件,不變,唯一
-
程式碼範圍 : 整個方法體
-
-
-
修飾塊 : 同步塊 synchronized(條件){ 排隊執行的程式碼; }
-
-
注意
-
同步的程式碼範圍太大,效率太低
-
-