gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 19:58:35 27 4
gpt4 key购买 nike

我什么都试过了。这个也是How to stop the task scheduled in Java.util.Timer class

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

我用两种方式调用该任务:

  1. 我这样安排 Timer:

    timer.schedule(timerTask, 60 * 1000);

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

    取消当前工作(); timer.schedule(timerTask, 0);

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

但我需要它停止。

public static void cancelCurrentwork() {
if (timerTask!= null) {
timerTask.cancel();
}
}

此实现只是取消了计时器,但让当前正在执行的任务有待完成。

public static void cancelCurrentwork() {
if (timer!= null) {
timer.cancel();
}
}

定时器有没有办法停止当前正在执行的任务,比如 Thread.kill() 之类的?当我需要停止该任务时,我希望它丢失所有数据。

最佳答案

Timer 无法停止其轨道上的任务。

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

关于java - 如何立即停止在 Java.util.Timer 类中安排的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4050442/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com