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

时间:2019-03-20 17:46:17

标签: java multithreading weblogic

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

2 个答案:

答案 0 :(得分:1)

如果只有一个Thread,则应按照this flag中的说明使用易失性标志。

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

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

答案 1 :(得分:0)

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

根据建议,我使用ExecutorService生成线程。