【发布时间】:2014-09-19 07:52:26
【问题描述】:
我已经看到从 Web 应用程序创建的 Thread 在重新部署 war 文件时不会被杀死。为了测试,我创建了一个ServletContextListener,并从contextInitialized 的方法创建了一个Thread。如果我删除生成Thread 的代码并重新部署战争,它仍在运行。
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class RpiServletContextListener implements ServletContextListener {
public RpiServletContextListener() {
}
@Override
public void contextInitialized(ServletContextEvent event) {
new Thread(() -> {
while(true) {
System.out.println("Here------------------");
try {
TimeUnit.SECONDS.sleep(30);
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
@Override
public void contextDestroyed(ServletContextEvent event) {
}
}
- 是什么原因?
- 如何在应用停止时杀死它?
环境:码头
【问题讨论】:
标签: java multithreading web-applications