use*_*818 13 java multithreading tomcat
我开发了一个在Tomcat中运行的多线程Web应用程序.但我不能用
shutdown.bat
Run Code Online (Sandbox Code Playgroud)
Tomcat没有优雅地停下来.在调试器中,我看到线程在shutdown命令后继续运行.我是否必须修复我的应用程序代码以满足特殊要求?谢谢.
小智 12
...并将其他响应与Java Servlet环境的工作联系起来;
如果您没有将线程声明为守护程序线程,则表示服务器关闭线程的方式是实现ServletContextListener
并将其配置到Web应用程序(web.xml).当Tomcat关闭时,它将首先关闭每个应用程序,这反过来将导致contextDestroyed()
调用侦听器的方法 - 这是你可以通知自己的线程他们应该完成他们的工作.
您需要取消线程,最好是通过调用interrupt
它们并确保它们以这样的方式编写,即它们响应中断 - 意味着,检查它们的中断标志并智能地响应InterruptedExceptions(不仅仅是吃它们并继续) .
上述建议假设您不希望您的线程立即放弃他们正在做的事情.如果你对它好,那就让它们成为守护进程.
归档时间: |
|
查看次数: |
7836 次 |
最近记录: |