Java学习,线程异常处理

Java线程编程中,异常处理非常重要,未处理的异常可能会导致线程意外终止,影响到整个应用程序的稳定性和可靠性。

示例:

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit; 
public class MultiThreadedExceptionHandling { 
    public static void main(String[] args) {
        // 创建线程池
        ExecutorService executorService = Executors.newFixedThreadPool(3);
 
        // 提交多个任务给线程池
        for (int i = 0; i < 5; i++) {
            int taskId = i;
            executorService.submit(() -> {
                try {
                    // 可能抛出异常的任务
                    performTask(taskId);
                } catch (Exception e) {
                    // 捕获并处理异常
                    System.err.println("Task " + taskId + " encountered an error: " + e.getMessage());
                }
            });
        }
 
        // 关闭线程池,等待所有任务完成
        executorService.shutdown();
        try {
            if (!executorService.awaitTermination(60, TimeUnit.SECONDS)) {
                executorService.shutdownNow();
                if (!executorService.awaitTermination(60, TimeUnit.SECONDS))
                    System.err.println("ExecutorService did not terminate");
            }
        } catch (InterruptedException ex) {
            executorService.shutdownNow();
            Thread.currentThread().interrupt();
        }
    }
 
    // 模拟任务方法,可能抛出异常
    private static void performTask(int taskId) throws Exception {
        if (taskId % 2 == 0) {
            // 偶数任务抛出异常
            throw new Exception("Simulated exception for task " + taskId);
        } else {
            // 奇数任务正常执行
            System.out.println("Task " + taskId + " is running.");
            TimeUnit.SECONDS.sleep(1); // 模拟任务执行时间
            System.out.println("Task " + taskId + " completed.");
        }
    }
}

运行结果:

Task 1 is running.
Task 1 completed.
Task 3 is running.
Task 3 completed.
Task 0 encountered an error: Simulated exception for task 0
Task 2 is running.
Task 2 completed.
Task 4 encountered an error: Simulated exception for task 4      

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值