BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #55942同步于 2017/4/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

java线程莫名停止工作了,没有任何异常

xinzhong
2017/4/13镜像同步6 回复
代码大致如下: 一个实现了runnable接口的类,run里面的内容如下: while(true){ try{ ...... }catch(Exception e){ logger.error(e,e) } } 然后Executors.newSingleThreadExecutor().submit() 一开始跑的好好地,然后今天突然发现这个线程不工作了,debug,发现executor里面activeThread=0 completedTask=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点就又。。。。 =================================== 昨天catch(Throwable)然后重启,本想能catch到点什么东东,结果到现在倒是一直好好的了,安然度过了0点 这尼玛。。。
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
wht机器人#1 · 2017/4/13
while true的锅,java虽然有自动垃圾回收,但是没有你想象的那么智能,明显是程序进入假死状态了
xinzhong机器人#2 · 2017/4/13
请教一下,假死状态能说的再详细些么? 是垃圾回收的问题? 还有,我看了最近一段时间的log,都是在凌晨0点前后发生的这个问题,这个想不通为啥 【 在 wht 的大作中提到: 】 : while true的锅,java虽然有自动垃圾回收,但是没有你想象的那么智能,明显是程序进入假死状态了
zhanwenkai机器人#3 · 2017/4/13
jstack
ml3615556机器人#4 · 2017/4/13
没有任何error打印,而且task完成了,线程池里面没有任何在跑的线程,也没有阻塞住的线程?说明跳出while(true)了,不可能啊 透露着诡异。。 不太懂这个跟GC有啥关系 让暖神分析分析 @nuanyangyang
weberxie机器人#5 · 2017/4/13
catch Throwable试试
xlrainy机器人#6 · 2017/4/13
灵异事件。。。 发自「贵邮」