在Java中,Thread.join()
方法用于等待一個線程執行完畢后再繼續執行當前線程。這個方法可以用于線程間的通信,因為它允許一個線程等待另一個線程完成某個任務或達到某個狀態。
下面是一個簡單的示例,展示了如何使用Thread.join()
來處理線程間的通信:
public class JoinExample {
public static void main(String[] args) {
// 創建兩個線程
Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Thread 1 is running.");
try {
// 讓線程1暫停2秒,模擬某個任務的執行
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Thread 1 has finished.");
}
});
Thread thread2 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Thread 2 is running.");
try {
// 讓線程2暫停3秒,模擬另一個任務的執行
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Thread 2 has finished.");
}
});
// 啟動線程
thread1.start();
thread2.start();
// 使用join方法等待線程1執行完畢
try {
thread1.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Main thread continues after Thread 1 has finished.");
}
}
在這個示例中,我們創建了兩個線程thread1
和thread2
,它們分別執行不同的任務。我們使用thread1.join()
方法來確保主線程在thread1
執行完畢后再繼續執行。這樣,我們可以在線程1和任務完成后執行一些操作,例如輸出一條消息。
需要注意的是,Thread.join()
方法只能用于等待一個線程執行完畢,而不能用于多個線程之間的通信。如果需要在多個線程之間進行通信,可以使用其他方法,例如使用wait()
和notify()
方法(這些方法需要在同步代碼塊或同步方法中使用)或者使用CountDownLatch
、CyclicBarrier
、Semaphore
等并發工具類。