如何立即停止在Java.util.Timer类中安排的任务

val*_*674 5 java schedule timer scheduled-tasks

我尝试了一切.这一个如何停止在Java.util.Timer类中安排的任务

我有一个实现java.util.TimerTask的任务

我用两种方式称呼该任务:

  1. 我安排这样的计时器:

    timer.schedule(timerTask,60*1000);

  2. 有时我需要立即开始工作,如果有任何工作,它必须取消timerTask

    cancelCurrentWork(); timer.schedule(timerTask,0);

此实现不会停止当前的工作:(文档说:如果在发生此调用时任务正在运行,则任务将运行完成,但永远不会再次运行)

但我需要它停下来.

public static void cancelCurrentwork() {
 if (timerTask!= null) {
  timerTask.cancel();
 }
}
Run Code Online (Sandbox Code Playgroud)

这个实现只是取消了计时器,但目前正在完成任务.

public static void cancelCurrentwork() {
 if (timer!= null) {
  timer.cancel();
 }
}
Run Code Online (Sandbox Code Playgroud)

在计时器中是否有一种方法可以停止当前正在执行的操作,比如Thread.kill()之类的东西?当我需要停止任务时,我希望它放弃所有数据.

aio*_*obe 6

Timer无法将任务停在其轨道上.

您将需要在运行任务本身中具有单独的机制,以检查它是否应该继续运行.例如,您可以拥有一个AtomicBoolean keepRunning变量,当您希望任务终止时,该变量设置为false.