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

溫馨提示×

java threadpoolexecutor如何處理異常

小樊
81
2024-11-16 23:48:55
欄目: 編程語言

在Java中,ThreadPoolExecutor類本身并不直接處理異常。當你在ThreadPoolExecutor中執行任務時,如果任務拋出異常,那么這個異常將被傳遞給Future.get()方法,當調用這個方法時,它會拋出ExecutionException。要處理這個異常,你需要捕獲并處理它。

以下是一個簡單的示例,展示了如何在ThreadPoolExecutor中處理異常:

import java.util.concurrent.*;

public class ThreadPoolExecutorExample {
    public static void main(String[] args) {
        int corePoolSize = 2;
        int maximumPoolSize = 4;
        long keepAliveTime = 60L;
        TimeUnit unit = TimeUnit.SECONDS;
        BlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<>(10);
        ThreadPoolExecutor executor = new ThreadPoolExecutor(
                corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue);

        for (int i = 0; i < 10; i++) {
            int finalI = i;
            executor.submit(() -> {
                try {
                    System.out.println("Executing task " + finalI);
                    if (finalI == 5) {
                        throw new RuntimeException("Task " + finalI + " failed");
                    }
                } catch (Exception e) {
                    System.out.println("Task " + finalI + " encountered an exception: " + e.getMessage());
                }
            });
        }

        executor.shutdown();
    }
}

在這個示例中,我們創建了一個ThreadPoolExecutor,并提交了10個任務。其中一個任務(任務5)會拋出一個異常。當我們調用Future.get()方法時,它會拋出ExecutionException,我們可以捕獲并處理這個異常。在這個例子中,我們只是打印出異常的消息。

注意,為了避免程序終止,你應該始終在可能拋出異常的代碼塊周圍使用try-catch語句,或者在調用Future.get()時使用try-catch語句。

0
昭平县| 廉江市| 区。| 灵石县| 万宁市| 耒阳市| 旬阳县| 犍为县| 碌曲县| 布拖县| 永春县| 芮城县| 宜兰县| 宜春市| 兰坪| 荥经县| 安达市| 泸州市| 杭锦后旗| 东莞市| 鹿泉市| 新兴县| 玉溪市| 安国市| 东丽区| 兴化市| 深圳市| 郴州市| 洞口县| 慈利县| 新余市| 全南县| 玉屏| 清新县| 宝清县| 万全县| 同德县| 凤山县| 资讯| 许昌县| 吴忠市|