有大酪遇见过类似这种问题吗,想问问是怎么定位和解决的?
问题场景复现:
- 场景是在一个多线程启动的任务,服务器是无图形渲染的,而且这种问题就在办这种业务才出现,其他业务没复现过;
- 该业务是一种涉及多张表的业务逻辑,如数据的备份和迁移;
- 抛出的异常日志打印正常并不在这个线程中执行,而是自己声明的自定义线程池;
- 这种异常很少出现,一天偶尔一两次;
- 自己捕获异常的逻辑通过下面这种方式获取,有没有可能是线程复用而导致线程切片轮训,获取到其他业务的异常;
public void execWkRs2Hs(Thread.UncaughtExceptionHandler exceptionHandler) {
Thread.setDefaultUncaughtExceptionHandler(exceptionHandler);
// ...
}
commonBusinessService.execWkRs2Hs((t, e) -> {
logger.error("[业务办结/终止] 移库失败! Gid = " + gid, e);
});
