我有一个 TimerTask,它作为我的 Runnable 类的 run() 方法中的第一件事开始。我想确保它在可运行对象关闭时停止。
runnable 是通过 ExecutorService 启动的。当调用 shutdown() 时,我看不到从 ExecutorService 中将钩子返回到可运行对象的方法。
如何确保 TimerTask 已停止?
谢谢
我有一个 TimerTask,它作为我的 Runnable 类的 run() 方法中的第一件事开始。我想确保它在可运行对象关闭时停止。
runnable 是通过 ExecutorService 启动的。当调用 shutdown() 时,我看不到从 ExecutorService 中将钩子返回到可运行对象的方法。
如何确保 TimerTask 已停止?
谢谢
任务完成后,使用 ExecuterService.submit() 取回 Future 对象。
方法调用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();
}
}