Java 如何在tomcat关闭时销毁计划线程?
我使用ScheduleThreadPoolExecutor创建了一个计划代码调用,如下所示:Java 如何在tomcat关闭时销毁计划线程?,java,tomcat,scheduled-tasks,Java,Tomcat,Scheduled Tasks,我使用ScheduleThreadPoolExecutor创建了一个计划代码调用,如下所示: ScheduledThreadPoolExecutor stpe = new ScheduledThreadPoolExecutor(1); stpe.scheduleAtFixedRate(new Updatey(), 0, 60, TimeUnit.MINUTES); 它运行一个简单的类: class Update implements Runnable { public vo
ScheduledThreadPoolExecutor stpe = new ScheduledThreadPoolExecutor(1);
stpe.scheduleAtFixedRate(new Updatey(), 0, 60, TimeUnit.MINUTES);
它运行一个简单的类:
class Update implements Runnable {
public void run() {
//update code here
}
我有一个ServletContextListener,它在tomcat关闭时调用一个方法,并执行一些其他整理工作。但我不知道如何使用java在关闭时清理这个额外的线程。侦听器在单独的程序中运行,因此它让我有点卡住了
有人知道关闭时如何清理吗
TIA代替
ScheduledThreadPoolExecutor stpe = new ScheduledThreadPoolExecutor(1);
在线程工厂中使用构造函数
ScheduledThreadPoolExecutor stpe = new ScheduledThreadPoolExecutor(1, threadFactory);
您的线程工厂应该生产作为守护进程的线程,因此关闭这些线程将自动消亡。您可以使用自己的工厂,也可以只使用guava的工厂。您可以将
ServletContextListener
实例与ScheduledThreadPoolExecutor
的引用一起注入吗?如果是这样,那么只需调用ScheduledThreadPoolExecutor.shutdownNow()。