1

我有一个 TimerTask,它作为我的 Runnable 类的 run() 方法中的第一件事开始。我想确保它在可运行对象关闭时停止。

runnable 是通过 ExecutorService 启动的。当调用 shutdown() 时,我看不到从 ExecutorService 中将钩子返回到可运行对象的方法。

如何确保 TimerTask 已停止?

谢谢

4

2 回答 2

0

任务完成后,使用 ExecuterService.submit() 取回 Future 对象。

ExecutorService.Submit()

于 2013-05-06T21:16:22.850 回答
0

方法调用TimerTask.cancel()应该做所期望的。

你的Runnable.run方法可以这样设计:

public void run() {
    pingTask = new PingTimerTask(...);
    try {
        ...
    } finally {
        /* this code even gets executed when an exception
         * (for example an *InterruptedException*) was thrown:
         */
        pingTask.cancel();
    }
}
于 2013-05-06T21:11:37.100 回答