java线程跳出while(true),自动停止了,没有任何异常,

道不虚行只在人 2017-04-18 05:05:00
代码大致如下:
一个实现了runnable接口的类,run里面的内容如下:
while(true){
try{
......
}catch(Exception e){
logger.error(e,e)
}
}

然后Executors.newSingleThreadExecutor().submit()

一开始跑的好好地,然后今天突然发现这个线程不工作了,debug,发现executor里面activeThread=0 completedTask=1
[Running, pool size = 1, active threads = 0, queued tasks = 0, completed tasks = 1]

log里面没有看到任何异常

再仔细看,发现一个很奇怪的地方:4月11号晚上23:59还在工作(能看到打印的log),然后4月12号0点一过,直到今天再也没看到相关log的打印。

搞了半天,没有头绪。无奈重启,重启后又正常了。。。

单线程的线程池,task是while(true)从一个LinkedBlockingQueue里面取数据,出现问题的时候,queue里面已经堆了好几百条数据了,然后再看线程池,直接显示已完成task=1,这。。 实在想不明白while(true)也能跳出?看了tomcat下面所有的log,没有任何异常,/var/log/messages也毛线都没有

又往前看了几天的log,发现一到0点,这个线程就这个样子了,重启之后就好了,然后到0点就又。。。。
...全文
1892 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjjqrqqq 2021-01-18
  • 打赏
  • 举报
回复
我接一句, 应该是线程抛了Error,Exception捕获不到Error错误 catch (Error error) { }
yjjqrqqq 2021-01-18
  • 打赏
  • 举报
回复
楼主没然后了,我也在找这个原因。 停止了,没异常
hongfu8 2020-10-22
  • 打赏
  • 举报
回复
最近也发现了这个问题,一直再排查,也还没发现原因
ChenjcarryOn 2020-04-26
  • 打赏
  • 举报
回复
楼主后来查出来是什么问题呢?有没有什么思路分享一下
逆流的小白 2019-12-16
  • 打赏
  • 举报
回复
一样的问题,本地跑没出过问题,放服务器,每天都会停。。。什么鬼。
_Soul_ 2018-10-23
  • 打赏
  • 举报
回复
我也遇到这个问题,本地没有问题。生产环境遇到了。生产环境是openjdk 1.8

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧