如何停止从weblogic容器中的servlet生成的线程?

问题描述 投票:1回答:2

我正在Weblogic容器中启动时加载一个servlet,我从中生成一个我想连续运行的线程,直到应用程序启动。但是,从容器停止或删除应用程序不会停止生成的线程。我是否可以对如何在停止应用程序时停止此线程提出任何建议。我的应用程序是在Java-8上。

java multithreading weblogic
2个回答
1
投票

如果你有一个Thread,你应该使用this flag中解释的易失性标志。

您可以通过切换到ExecutorService以产生工作线程并在应用程序关闭时调用ExecutorService.shutdown()来更进一步。如果您不需要正常关闭,则可以在创建线程时使用ExecutorService.shutdownNow()并设置Thread.setDaemon(true)标志。

请注意,WebLogic服务器根据Using Work Managers to Optimize Scheduled Work提供管理器以使用服务器线程池。如果您的应用程序与WebLogic服务器紧密耦合,则可能需要使用服务器线程池。


0
投票

使用ServletContextListener而不是普通的HttpServlet。使用contextInitialized()和contextDestroyed()方法分别在应用程序启动和关闭时启动和停止线程。

正如所建议的那样,我使用了ExecutorService来生成线程。

© www.soinside.com 2019 - 2024. All rights reserved.