如何立即停止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

    下一篇: How can I check the system version of Android?