如何立即停止Java.util.Timer类中计划的任务
我尝试了一切。 这也是如何停止在Java.util.Timer类中计划的任务
我有一个实现java.util.TimerTask的任务
我以两种方式称呼该任务:
我安排像这样的计时器:
timer.schedule(timerTask,60 * 1000);
有时我需要立即开始这项工作,如果有任何工作正常,它必须取消timerTask
cancelCurrentWork(); timer.schedule(timerTask,0);
该实现不会停止当前的工作:(文档说:如果在发生此调用时该任务正在运行,该任务将运行至完成,但不会再次运行)
但我需要停下来。
public static void cancelCurrentwork() {
if (timerTask!= null) {
timerTask.cancel();
}
}
这个实现只是取消了定时器,但是离开了当前正在完成的任务。
public static void cancelCurrentwork() {
if (timer!= null) {
timer.cancel();
}
}
有没有办法在计时器中停止当前正在执行的taks,如Thread.kill()或其他? 当我需要停止任务时,我希望它释放所有数据。
定时器无法在其轨道上停止任务。
您将需要在正在运行的任务中拥有一个单独的机制,检查它是否应该继续运行。 例如,您可以有一个AtomicBoolean keepRunning
变量,当您想要终止任务时,您将其设置为false。
如果您的计时器使用某种文件/套接字等,则可以从计时器外部关闭该对象,并且计时器任务将引发异常,并且您可以使用它来停止计时器。
但总的来说,你需要某种毒丸来成功阻止一个单独的线程/定时器。
链接地址: http://www.djcxy.com/p/12995.html上一篇: How to stop immediately the task scheduled in Java.util.Timer class