Java Concurrency #13: Thread Join 讓執行緒的執行結果整合起來
Published in
3 min readAug 29, 2020
介紹如何透過Thread Join讓執行緒的執行結果整合起來
前言
此篇文章介紹如何使用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住等待結果。
結論
此篇文章介紹最簡單的Thread.join方法,接下來的文章會開始介紹比較符合真實情境的Java JUC 同步工具。此篇只是先拋磚引玉,用最簡的Thread.join當作開端