0

我已经使用 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

4

1 回答 1

2

代替

ScheduledThreadPoolExecutor stpe = new ScheduledThreadPoolExecutor(1);

使用带有线程工厂的构造函数

ScheduledThreadPoolExecutor stpe = new ScheduledThreadPoolExecutor(1, threadFactory);

您的线程工厂应该生产作为守护进程的线程,因此关闭这些线程会自动死亡。您可以使用自己的工厂或简单地使用番石榴的ThreadFactoryBuilder

于 2013-04-30T09:06:07.977 回答