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