Java 如何在tomcat关闭时销毁计划线程?

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

我使用ScheduleThreadPoolExecutor创建了一个计划代码调用,如下所示:

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()。