线程挂掉不一定会输出日志到控制台,比如ScheduledThreadPoolExecutor,如果在执行的任务中有未捕获的异常抛出,就行停止调度,没有任何错误输出到控制台或日志文件.在项目中这会导致一些非常奇怪的错误,并且常难以发现. 当怀疑线程挂掉时可以在run方法加try catch,打印错误日志.当然,更好的习惯是每次使用ScheduledThreadPoolExecutor线程池都在run()方法里加上try-catch. 解决线上问题,日志真的很重要!!! 另转载一篇文章,写得很好,原