java - 当容器关闭时 sleep 线程会发生什么?

标签 java multithreading tomcat concurrency

假设

运行网络应用程序的 tomcat 容器。

触发 tomcat 关闭命令。

在我的例子中,tomcat 容器没有关闭,因为在关闭命令被触发后仍有任务线程。

最佳答案

除非 Tomcat 中有我不知道(可能)的魔法,否则问题可能是您的 hibernate 线程不是守护线程。一旦启动 JVM 关闭(通过外部 HUP/INT/TERM 信号,或 System.exit 或任何其他方式),JVM 将等待直到所有非守护线程正常完成。您需要安排 sleep 线程有序关闭,或设置 daemon=true当它们被创建时。

关于java - 当容器关闭时 sleep 线程会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8072479/

相关文章:

java - Hystrix 线程池属性

java - 每秒用多线程更新 JLabel

multithreading - 如何从后台线程有效地对 Delphi 6 框架或表单执行图像流预览?

apache - Apache httpd 背后的 Tomcat 通过 SSL(httpd 工作,tomcat 返回错误 500)

tomcat - 在独立 Tomcat 服务器中记录 Servlet 异常的位置

java - hibernate 在父类(super class)中选择一个ID,而不为父类(super class)创建表

java - 在具有两个实例变量的对象上切换大小写

c# - .NET Framework 和 .NET Core 之间的线程池差异、线程池饥饿

java - 嵌入式 Tomcat 转发到 JSP 不起作用

java - 加载不存在类的首选项