1. 程式人生 > 其它 >JavaSE之多執行緒

JavaSE之多執行緒

多執行緒

多工執行,多路徑執行

  1. 優點:

    1. 提高效能

    2. 提高效率

  2. 程序與執行緒之間的區別

    1. 程序:系統中的程式,一個程序之間可以包含1~n個執行緒,系統中資源分配的最小單位,每個程序都有自己的程式碼與資料空間,程序之間的切換開銷較大

    2. 程式中的順序流,執行緒是cpu排程與執行的最小單位,多個執行緒之間共享程序的程式碼和資料空間,每一個執行緒都有自己的程式計數器執行棧,執行緒之間切換開銷較小,一個cpu同一時刻只能排程一個執行緒

  3. 執行緒學習內容

    1. 執行緒的概念,優缺點

    2. 建立執行緒的方式 *

    3. 執行緒的狀態

    4. 執行緒安全問題 *

    5. 執行緒通訊

  4. 建立執行緒的方式

    1. 繼承Thread,重寫run方法 + start開啟執行緒

    2. 實現Runnable介面,重寫run方法 + start開啟執行緒

      1. 優點:介面多實現,類的單繼承。實現資源共享

      2. 重寫方法對異常丟擲的要求:重寫方法上丟擲的異常型別<=被重寫方法上異常的丟擲型別

    3. 實現Callable介面,重寫call方法 + 執行緒池

      1. 優點:call方法可以丟擲異常,可以定義返回值,run方法不可以

  5. 繼承Thread,重寫run方法 + start開啟執行緒

 

執行緒安全

  1. 定義:當多個執行緒同時操作同一份資源,才有可能出現執行緒不安全問題

  2. 同步鎖 synchronized:有可能出現數據不安全的程式碼段,讓多個執行緒排隊執行

  3. 同步的使用

    1. 同步條件 : 協調多個執行緒排隊執行的條件 -->物件的鎖

    2. 同步的程式碼 : 需要多個執行緒排隊執行的程式碼

  4. synchronized用法

    1. 修飾方法 : 同步方法

      1. 同步例項方法

        1. 條件 : 呼叫成員方法的物件

        2. 程式碼範圍 : 整個方法體

      2. 同步靜態方法

        1. 條件 : 鎖類->鎖的類的Class物件->一個類只有一個,載入到記憶體中究存在Class物件,不變,唯一

        2. 程式碼範圍 : 整個方法體

    2. 修飾塊 : 同步塊 synchronized(條件){ 排隊執行的程式碼; }

  5. 注意

    1. 同步的程式碼範圍太大,效率太低

    2. 同步的程式碼範圍太小,鎖不住,不安全