多线程的那些事
踩坑记录
在线程中打印的日志,没有错误信息和堆栈信息。
代码:
ForkJoinTask<?> task = pool.submit(() -> {
try {
processContent(appendixs);
} catch (Exception e) {
LOGGER.error("进程执行错误", e);
}
});
//有序关闭线程池,但是在队列中的线程会不受影响。
pool.shutdown();
在查看日志的时候,日志中只有一行“进程执行错误”,然后什么信息也没有了,也没有错误详情,也没有堆栈 。
需要改成一下捕获方法。
ForkJoinTask<?> task = pool.submit(() -> {
processContent(appendixs);
});
//有序关闭线程池,但是在队列中的线程会不受影响。
pool.shutdown();
// 捕获异常
try {
task.get(); // 获取任务的执行结果或异常
} catch (Exception e) {
LOGGER.error("进程执行错误", e);
}
pool.shutdown();
License:
CC BY 4.0