使用ExecutorService.submit()提交的任务会由于线程池自身的保护机制,不会将异常打印到控制台,所以不会看到,有时程序莫名其妙的结束就是因为这种情况
可以这样
Runnable crawlBlog = new Runnable() {
public void run() {
try {
doSomething();
} catch (Exception e) {
//打印一下错误信息,出现异常可以知道错误发生在哪里
e.printStackTrace();
}
}
}
或者
不使用submit()使用execute()也可以
原理暂时不知道,先放着