我有一个包含10个线程的线程池来处理某些任务,并且它们在我的tomcat服务器中的Web应用程序中继续运行。 我使用ExecutorService创建线程池,如下所示。
ExecutorService executor = Executors.newFixedThreadPool(10);
在不执行executor.shutdown()的情况下停止tomcat服务器后,这些线程会被杀死还是继续运行?
感谢。
答案 0 :(得分:1)
正如其他人提到的,如果执行tomcat shutdown,它将终止你的线程。
但是,根据你的评论,你试图优雅地杀死你的线程。所以我认为你需要在ServletContextListener中实现你的关闭逻辑并使用contextDestroyed方法。
答案 1 :(得分:0)
当Tomcat关闭时,所有剩余的线程也将被终止。您的线程池可能会阻止tomcat正常关闭。最终,该进程可能会被运行Tomcat的脚本杀死(因此,这取决于您启动/关闭Tomcat的方式)。
答案 2 :(得分:0)
并不总是建议在Web容器内创建线程,因为它们不会让容器正常关闭。您应该使用托管线程池,如果您想要访问其他容器的托管资源(例如EJB),它们也将非常有用。