1
我正在使用ScheduledExecutorService来调度线程。我想知道当JBoss关闭时会发生什么?它是否会终止服务器中启动的所有线程,包括我计划的线程?我是否必须使用ScheduledFuture手动执行此操作,并在销毁ServletContext时取消线程?优雅地停止线程
我正在使用ScheduledExecutorService来调度线程。我想知道当JBoss关闭时会发生什么?它是否会终止服务器中启动的所有线程,包括我计划的线程?我是否必须使用ScheduledFuture手动执行此操作,并在销毁ServletContext时取消线程?优雅地停止线程
有两种方法:
JBoss会不调用其中的任何一个,除非您在关闭时调用的方法中进行调用。对于Web应用程序,您有机会在javax.servlet.ServletContextListener.contextDestroyed(ServletContextEvent)
中执行此操作。
当然这是JavaEE/Servlets的方式。您可以使用例如Spring框架。通过创建org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler,您将免费关闭(此类实现org.springframework.beans.factory.DisposableBean
)。看详细here。