Java Concurrency #13: Thread Join 讓執行緒的執行結果整合起來

Charlie Lee
Bucketing
Published in
3 min readAug 29, 2020

介紹如何透過Thread Join讓執行緒的執行結果整合起來

Photo by Helena Lopes on Unsplash

前言

此篇文章介紹如何使用Java Thread的join方法,將不同Thread的結果整合。前面的系列文已經介紹,最基本的將主任務切分不同子任務並行處理的方法和管理工具,而接下來會介紹如何用過最簡單與基本的Thread.join匯聚這些切分的任務。

案例

假設現在有兩個Task A和B,Main Thread會負責啟動兩個Task讓任務並行處理,程式碼如下

public static void main(String[] args) throws InterruptedException {
Thread t1 = new Thread(() -> {
try {
System.out.println("T1 task start");
Thread.sleep(4000);
System.out.println("T1 task finish");
} catch (InterruptedException e) {
e.printStackTrace();
}
});
Thread t2 = new Thread(() -> {
try {
System.out.println("T2 task start");
Thread.sleep(2000);
System.out.println("T2 task finish");
} catch (InterruptedException e) {
e.printStackTrace();
}
}); System.out.println("Start t1 and t2 task"); t1.start();
t2.start();
}

而接下來只需要使用Thread Join的方法,就可以讓Main Thread等待兩個任務都結束,而這過程就是讓兩個Thread的執行同步,也是最簡單的Thread同步方法。

程式碼如下:

只要在等待結果的Thrad中執行join方法,就會block住等待結果。

Git Hub原始碼

結論

此篇文章介紹最簡單的Thread.join方法,接下來的文章會開始介紹比較符合真實情境的Java JUC 同步工具。此篇只是先拋磚引玉,用最簡的Thread.join當作開端

--

--