gpt4 book ai didi

Java - Timer.cancel() 与 TimerTask.cancel()

转载 作者:搜寻专家 更新时间:2023-10-30 21:31:05 30 4
gpt4 key购买 nike

在我的 Android 应用程序中,我运行一个计时器并在其他事件发生时取消它:

  class MyTimerTask extends TimerTask {
override boolean cancel() {
...
}

override void run() {
...
}
}

...
Timer t = new Timer();
t.schedule(new MyTimerTask(),...)
...
t.cancel();

我期待 t.cancel() 自动调用 MyTimerTaskcancel() 方法。但是永远不会调用该方法。

我想知道这两种方法到底有什么不同,为什么第二种方法不会自动调用。

最佳答案

我想你是想在你的 MyTimerTask 实例上调用 cancel()

阅读此方法的文档...


http://developer.android.com/reference/java/util/TimerTask.html

公共(public) boolean 取消()

取消 TimerTask 并将其从 Timer 的队列中移除。通常,如果调用没有阻止 TimerTask 运行至少一次,它会返回 false。后续调用无效。


http://docs.oracle.com/javase/7/docs/api/java/util/Timer.html#cancel

public void cancel()

终止此计时器,丢弃所有当前计划的任务。不干扰当前正在执行的任务(如果存在)。一旦定时器终止,它的执行线程就会优雅地终止,并且不会有更多的任务被安排在它上面。

请注意,从此计时器调用的计时器任务的运行方法中调用此方法绝对保证正在进行的任务执行是此计时器将执行的最后一次任务执行。

这个方法可能会被重复调用;第二次和后续调用无效。


在计时器上调用 cancel() 会停止它并删除所有排队的任务。但是没有 promise 在这些任务上调用 cancel()。此外,鉴于这些任务中只有 1 个可以随时运行,这是否有意义?

关于Java - Timer.cancel() 与 TimerTask.cancel(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21492693/

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