gpt4 book ai didi

java - Tomcat8 在关闭时杀死我的线程

转载 作者:行者123 更新时间:2023-12-01 22:20:11 25 4
gpt4 key购买 nike

我创建了一个网络应用程序,需要在关闭时进行一些清理。此清理过程大约需要一分钟,完全可以完成。

当我将 web 应用程序部署到 Tomcat 8 然后停止它时,我的 ContextListener 被调用并开始清理。但 Tomcat 似乎以艰难的方式停止了我的线程,并且它不会再完成。至少在 Tomcat 6 上这不是问题。

如何配置 Tomcat 8 以阻止行为不当的想法?

部分答案:

我发现这和我所做的性能优化有关。我使用 startStopThreads="2" 并行启动我的应用程序,效果很好,但在关闭时,这似乎也会杀死我的线程。

最佳答案

如果您有一个要在关闭时执行的任务,我会将其添加为关闭 Hook 。 Tomcat 8 很可能被称为 System.exit(),这是正常的事情,这会杀死所有用户线程,但启动关闭 Hook 。

更好的解决方案是永远不要让系统处于您真正需要的状态。也就是说,您不能假设应用程序会优雅地终止。

<小时/>

如果您正在等待客户端断开连接,我建议您添加一个关闭阶段。在此阶段,您拒绝新连接、将连接移至另一台服务器或尝试优雅地告诉现有连接您要离开。经过一小段时间或超时后,您就会关闭。

关于java - Tomcat8 在关闭时杀死我的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30011147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com