如何取消java上的计时器?

如何取消java上的计时器?,java,timer,Java,Timer,当i2==690时,如何取消计时器 这是我的代码: Timer timer = new Timer(); timer = new Timer(false); timer.schedule(new TimerTask() { @Override public void run() { if (i2 == 690) { timer.cancel(); } i2--; System.out.prin

i2==690
时,如何取消计时器

这是我的代码:

Timer timer = new Timer();
timer = new Timer(false);
timer.schedule(new TimerTask() {
    @Override
    public void run() {
        if (i2 == 690) {
            timer.cancel();
        }
        i2--;
        System.out.println("Java " + i2);
    }
}, 0, 1000);
你必须打电话。因此,只需在run()方法中调用this.cancel(),而不是在计时器上(因为
将引用run方法所属的匿名类实例)

如果需要取消计时器执行的其他任务,timer.cancel()也会停止这些任务(您当前正在执行的操作),但不会停止当前正在执行的TimerTask,这就是需要对TimerTask执行上述取消的原因

不干扰当前正在执行的任务(如果存在)

请注意,从该计时器调用的计时器任务的run方法中调用此方法绝对可以确保正在进行的任务执行是该计时器将执行的最后一次任务执行

因此,如果需要的话,将两个取消组合起来应该可以取消整个计时器。

您必须调用。因此,只需在run()方法中调用this.cancel(),而不是在计时器上(因为
将引用run方法所属的匿名类实例)

如果需要取消计时器执行的其他任务,timer.cancel()也会停止这些任务(您当前正在执行的操作),但不会停止当前正在执行的TimerTask,这就是需要对TimerTask执行上述取消的原因

不干扰当前正在执行的任务(如果存在)

请注意,从该计时器调用的计时器任务的run方法中调用此方法绝对可以确保正在进行的任务执行是该计时器将执行的最后一次任务执行

因此,如果需要的话,将两个取消组合起来应该可以取消整个计时器。

试试看

if (i2 == 690) {
timer.cancel();
timer.purge(); 
return;
}
-终止此计时器,丢弃任何当前计划的任务。不干扰当前正在执行的任务(如果存在)

-从此计时器的任务队列中删除所有已取消的任务。

请重试

if (i2 == 690) {
timer.cancel();
timer.purge(); 
return;
}
-终止此计时器,丢弃任何当前计划的任务。不干扰当前正在执行的任务(如果存在)


-从此计时器的任务队列中删除所有已取消的任务。

i2的初始值是多少?运行此代码时会发生什么?是否仅取消当前任务或计时器正在执行的所有任务?这无关紧要。我只想在i2等于690时取消计时器。没关系,我得到了所需的内容。谢谢您的帮助:)i2的初始值是多少?运行此代码时会发生什么?是否要仅取消当前任务或计时器正在执行的所有任务?这无关紧要,我只想在i2等于690时取消计时器。没关系,我得到了我需要的东西。感谢您的帮助:)这只会取消
TimerTask
。计时器将继续运行,任何其他计划任务将继续执行。@MikeB我想这是他想要的。我会在评论中问他。那只会取消
TimerTask
。计时器将继续运行,任何其他计划任务将继续执行。@MikeB我想这是他想要的。我会在评论中问他。