java线程跳出while(true),自动停止了,没有任何异常,
代码大致如下:
一个实现了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点就又。。。。