网页访问服务器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);

}

}

}

在上面的代码里,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值