執行緒的加入

2021-09-29 20:56:40 字數 918 閱讀 9067

如果當執行緒為多執行緒程式,假如存在乙個執行緒a ,現在需要加入乙個執行緒b,並要求執行緒b先執行完畢,在執行a程式,此時可以用thread中的join()方法來完成。舉個例子就好像你正在吃飯,有個人給你打**,你扔下筷子去接**,然後打完**繼續回來吃飯。

下面寫一段**加深理解:

class

timplements

runnable

catch

(interruptedexception e)

//休眠一秒

system.out.

println

(thread.

currentthread()

.getname()

+"-->"

+i);

//獲取當前執行緒名字}}

}public

class

join

}}

執行結果如下:

main--

>

0main--

>

1main--

>

2main--

>

3main--

>

4t1--

>

0t1--

>

1t1--

>

2t1--

>

3t1--

>

4main--

>

5main--

>

6main--

>

7main--

>

8main--

>

9process finished with exit code 0

**分析:主線程執行到i=4的時候,開始執行t1執行緒。

執行緒加入 join方法

join方法用於等待其他執行緒終止 如果執行緒a中呼叫了執行緒b的join方法,那麼執行緒a阻塞,直到執行緒b執行完後,執行緒a從阻塞狀態轉為就緒狀態,等待獲取cpu的使用權。join方法要在start方法呼叫後呼叫才有效,執行緒必須啟動,再加入。例子1 讓兩個執行緒順序列印1,2,3,即執行緒a列...

C 多執行緒一 啟動 加入 分離執行緒

c 執行緒庫啟動執行緒,可以歸結為構造std thread物件 std thread在標頭檔案 std thread 可以用可呼叫 callable 型別構造 啟動執行緒之後,要選擇結束執行緒的方式,等待執行緒結束 加入式.join 還是讓其自主執行 分離式.detach 示例 struct fun...

非同步執行緒池中加入MDC引數

在專案中需要非同步執行任務方法,但是非同步執行時會使用另乙個執行緒。因為mdc的引數時基於threadlocal的,每個執行緒都保留乙份。這樣就造成非同步執行緒的日誌id沒有或者跟前乙個日誌id不一致,不便於查詢日誌。解決方法 自定義任務裝飾器,並配置到執行緒池 bean taskexecutor ...