Java 併發程式設計學習筆記(1) 執行緒的基礎

2021-08-14 18:42:32 字數 1388 閱讀 4063

執行緒

乙個程式有多個任務,每個任務就是乙個執行緒。在我看來,執行緒就是程序裡的任務,負責處理乙個程式裡的元件。可能回重複乙個方法。

執行緒的狀態

並不同於大多數文章中說的,其實執行緒有6中狀態,既新建立(new),可執行(rnnable),被阻塞(blocked),等待(waiting),計時等待(time waiting),被終止(terminated)。

其中各中狀態,

當用new操作符建立乙個執行緒後,當執行緒還沒有執行時,既處於新建立狀態。

當呼叫start方法後,執行緒就處於runnable 狀態,其實該狀態就為就緒和執行狀態,他不必始終保持執行。

乙個執行緒被阻塞或等待的方式有3中,

1.為了防止執行緒間共用資料,當執行緒執行時被其他執行緒呼叫破壞資料,採用鎖物件(synchronized、顯示鎖、條件等)防止**塊受併發訪問干擾。當其他執行緒釋放鎖時,該執行緒獲得該鎖,接觸被阻塞。

2.當該執行緒通知執行緒排程器自己進入等待狀態。

3.這幾個方法有超時引數。呼叫後進入計時等待。

被終止:run方法自己終止/乙個異常終止。

執行緒的實現有兩種方式,一是繼承thread類,二是實現runnable介面,但不管怎樣,當我們new了thread例項後,執行緒就進入了初始狀態;

開啟乙個執行緒

繼承thread父類

public class mythread extends thread  catch (interruptedexception e) }}

}}

thread thread = new mythread();

thread.start();

實現runnable方法

public class mythread implements runnable   catch (interruptedexception e) }}

}}

runnable thread = new mythread();

new thread(thread).start();

用lambda實現r

runnable r = () ->

}catch (interruptedexception e)

};thread t = new thread(r);

t.start();

}

等方法來啟動執行緒

Java併發學習筆記(1) 併發程式設計基礎

執行緒的狀態 new 初始狀態,執行緒被new 出來,但還沒start 的狀態 runnable 指的是呼叫了start 方法,但還在等著cpu資源的狀態 running 乙個執行緒獲得了cpu資源,正在走的狀態 terminated 執行緒物件的run 方法走完了的狀態 blocked 執行緒被阻...

Java高併發程式設計學習筆記1

執行緒的runnable狀態 已經具備執行條件,只等待cpu排程 萬事俱備只欠東風 1 thread類中得start方法啟動乙個執行緒,並且該執行緒進入了可執行態 runnabel 2 run方法和start方法的區別。3 線 正的執行邏輯在run方法中,通常我們把run方法稱為執行緒的執行單元。重...

Java併發程式設計實戰筆記 1 執行緒安全簡介

資源利用率 程式在等待操作執行完成的空檔,執行另乙個程式 提高資源利用率。公平性使用者對於計算機的使用權,通過粗粒度的時間分片 使得使用者和程式共享資源程式。便利 效率性 乙個任務分解多個子任務,必要時通訊共同完成任務。非同步事件的簡單處理 對於單執行緒而言,如果要高效處理多個操作,必須使用非阻塞i...