在Java中,Thread.join()
方法用于等待一個線程執行完畢。如果你想在主線程中等待線程池中的某個任務執行完畢,可以使用ExecutorService
的submit()
方法提交任務,然后調用Future.get()
方法等待任務完成。
下面是一個簡單的示例:
import java.util.concurrent.*;
public class ThreadPoolJoinExample {
public static void main(String[] args) {
// 創建一個固定大小的線程池
ExecutorService executorService = Executors.newFixedThreadPool(3);
// 提交任務到線程池
Future<?> future1 = executorService.submit(() -> {
System.out.println("Task 1 is running");
try {
// 模擬任務執行耗時
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Task 1 is completed");
});
Future<?> future2 = executorService.submit(() -> {
System.out.println("Task 2 is running");
try {
// 模擬任務執行耗時
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Task 2 is completed");
});
// 等待線程池中的任務執行完畢
try {
future1.get();
future2.get();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
// 關閉線程池
executorService.shutdown();
}
}
在這個示例中,我們創建了一個固定大小的線程池,并提交了兩個任務。通過調用future1.get()
和future2.get()
方法,主線程會等待這兩個任務執行完畢。最后,記得關閉線程池。