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
1249

被折叠的 条评论
为什么被折叠?



