网页访问服务器tomcat一直在响应,Tomcat假死,无法响应前端请求原因分析

# 使用后台进程和 Shutdown Hook 友好地关闭 Tomcat

严重的问题就是在 JVM 关闭时,行为不良的线程不会被关闭。

你可能会问:为什么这会成为问题……好吧,对程序员来说这真的算不上一个问题,只要随便写点代码就可以解决。但是对使用软件的人而言这却会带来不必要的麻烦。原因是这样会产生很多行为不良的线程,而执行 Tomcat 的 shutdown.sh 命令收效甚微。这时你不得不执行下面命令野蛮的杀掉 web 服务器:

ps -ef | grepjava

先得到进程 pid,然后

kill -9 <>

……接着需要有一大片 web 服务器需要重启,这种混乱绝对让人头痛。最后你执行 shutdown.sh 停止 Tomcat。

在我最近的几篇博客里,我编写的那些行为不良的线程在 run() 方法开头都包含了下面的代码:

Override

public void run() {

while (true) {

try {

DeferredResult result = resultQueue.take();

Message message = queue.take();

result.setResult(message);

} catch (InterruptedException e) {

throw new UpdateException("Cannot get latest update. " + e.getMessage(), e);

}

}

}

在上面的代码里,

你可能感兴趣的:(网页访问服务器tomcat一直在响应,Tomcat假死,无法响应前端请求原因分析)