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