当我在 run 方法中调用 cancel() 时,我的 CheckStatus (TimerTask) 没有停止。 this.cancel() 也不起作用。我做错了什么?
import java.util.TimerTask;
class CheckStatus extends TimerTask {
int s = 3;
public void run() {
if (s > 0)
{
System.out.println("checking status");
s--;
}
else
{
System.out.println("cancel");
cancel();
}
}
}
这是我的司机
import java.util.*;
class Game {
static Timer timer;
static CheckStatus status;
public static void main(String[] args) throws InterruptedException {
CheckStatus status = new CheckStatus();
timer = new Timer();
timer.scheduleAtFixedRate(status, 0, 3000);
}
}
最佳答案
它对我有用——使用你发布的代码,我看到了:
checking status
checking status
checking status
cancel
... 仅此而已,表明 TimerTask
已被取消 - 它再也不会执行了。
您是否希望 Timer
在没有更多工作要做时自行关闭?它不会自动执行此操作。目前尚不清楚您的更大目标是什么,但避免这种情况的一种选择是让 TimerTask
也取消 Timer
- 这会起作用,但它并不是非常好设计,意味着 TimerTask
不能在包含其他任务的计时器中正常运行。
关于Java TimerTask 不取消,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8530959/