在Java中,可以使用ExecutorService
來創建線程池,然后利用isTerminated()
方法來判斷線程池是否執行完畢。
下面是一個示例代碼:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class Main {
public static void main(String[] args) {
// 創建線程池
ExecutorService executor = Executors.newFixedThreadPool(3);
// 提交任務
for (int i = 0; i < 5; i++) {
executor.submit(new Task(i));
}
// 關閉線程池
executor.shutdown();
// 等待所有任務執行完畢
try {
executor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 判斷線程池是否執行完畢
if (executor.isTerminated()) {
System.out.println("線程池執行完畢");
} else {
System.out.println("線程池還在執行中");
}
}
static class Task implements Runnable {
private int id;
public Task(int id) {
this.id = id;
}
@Override
public void run() {
System.out.println("任務 " + id + " 正在執行");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("任務 " + id + " 執行完畢");
}
}
}
在上面的示例中,我們創建了一個固定大小為3的線程池,并提交了5個任務。然后使用awaitTermination()
方法等待所有任務執行完畢,并使用isTerminated()
方法判斷線程池是否執行完畢。
運行示例代碼,輸出結果為:
任務 0 正在執行
任務 1 正在執行
任務 2 正在執行
任務 0 執行完畢
任務 3 正在執行
任務 1 執行完畢
任務 4 正在執行
任務 2 執行完畢
任務 3 執行完畢
任務 4 執行完畢
線程池執行完畢
可以看到,當所有任務執行完畢后,輸出了"線程池執行完畢"的提示。