我通过main方法启动了两个线程A、B,这两个线程都是独立的,互相不干扰,几乎在线程的所有可能出异常的地方都try-catch,而且是捕捉的Throwable,但是运行一段时间后,线程B好像就不执行了,而且没有发现任何异常。
A、B两个线程都是永不停止的任务,请问有什么办法能监控一下线程B,看看是什么原因导致线程B挂掉了。
A、B两个线程都是永不停止的任务,请问有什么办法能监控一下线程B,看看是什么原因导致线程B挂掉了。
public void run() {try{
go();
}catch(Throwable t){
Log4j.errorLogger.error("主线程出错!\r\n"+ Tool.getStackTraceAsString(t));
}Tool.rest(Constant.THREAD_REST);}
在方法go里面有debug,记录了线程了执行的状态,差不多执行了5-7个小时的时候,debug中就没有线程B的信息了。
看下这个接口的用法,如果真的有异常,可以捕获到的。
while (true) {
try{
go();
}catch(Throwable t){
Log4j.errorLogger.error("主线程出错!\r\n"+ Tool.getStackTraceAsString(t));
}
Log4j.debugLogger.debug("休息" + Constant.THREAD_REST);
Tool.rest(Constant.THREAD_REST);
}
}
用log说不定有延迟
我现在给每个线程都加上UncaughtExceptionHandler,看看是不是有别的地方没有捕捉到异常。