中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

java怎么判斷線程池是否執行完畢

小億
155
2023-08-20 03:36:47
欄目: 編程語言

在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 執行完畢
線程池執行完畢

可以看到,當所有任務執行完畢后,輸出了"線程池執行完畢"的提示。

0
定安县| 丹江口市| 泽州县| 屏山县| 忻城县| 台山市| 德阳市| 常德市| 塘沽区| 盈江县| 远安县| 呼和浩特市| 安塞县| 拜泉县| 阳朔县| 泊头市| 万安县| 醴陵市| 兴文县| 奉节县| 都江堰市| 富蕴县| 沙湾县| 招远市| 唐河县| 宁乡县| 依安县| 南昌市| 木兰县| 岚皋县| 黎川县| 丹东市| 芷江| 丹棱县| 始兴县| 高安市| 望江县| 武乡县| 普陀区| 奎屯市| 略阳县|