如何在停止tomcat服务器时检查线程是否被终止或继续运行?

时间:2016-03-18 07:50:34

标签: java multithreading jsp servlets

我有一个包含10个线程的线程池来处理某些任务,并且它们在我的tomcat服务器中的Web应用程序中继续运行。 我使用ExecutorService创建线程池,如下所示。

ExecutorService executor = Executors.newFixedThreadPool(10);

在不执行executor.shutdown()的情况下停止tomcat服务器后,这些线程会被杀死还是继续运行?

感谢。

3 个答案:

答案 0 :(得分:1)

正如其他人提到的,如果执行tomcat shutdown,它将终止你的线程。

但是,根据你的评论,你试图优雅地杀死你的线程。所以我认为你需要在ServletContextListener中实现你的关闭逻辑并使用contextDestroyed方法。

答案 1 :(得分:0)

当Tomcat关闭时,所有剩余的线程也将被终止。您的线程池可能会阻止tomcat正常关闭。最终,该进程可能会被运行Tomcat的脚本杀死(因此,这取决于您启动/关闭Tomcat的方式)。

答案 2 :(得分:0)

并不总是建议在Web容器内创建线程,因为它们不会让容器正常关闭。您应该使用托管线程池,如果您想要访问其他容器的托管资源(例如EJB),它们也将非常有用。

Explanation here