【问题标题】:Java - How to do something every time Timer ticks? [duplicate]Java - 每次计时器滴答时如何做某事? [复制]
【发布时间】:2017-09-18 01:24:24
【问题描述】:

我有一个 java Timer,我希望它在每次滴答作响时做一些事情。例如,我希望我的程序输出这个:

我想要的输出:

勾选 1 秒过去了
勾选 2 秒过去了
打勾 3 秒过去了
打勾 4 秒过去了
打勾 5 秒过去了
时间到了,正在运行 do_something()...

到目前为止,我所拥有的是:

Timer timer = new Timer();
TimerTask timerTask = new TimerTask() {
    @Override
    public void run() {
        System.out.println("Time up, running do_something()");
        do_something();
    }
};
timer.schedule(timerTask, 5);

到目前为止,我的代码的实际输出是这样的:

时间到了,正在运行 do_something()...

当我到达这条线时已经过去了 5 秒。

【问题讨论】:

  • 你需要一个循环
  • 我应该如何制作循环?
  • 好吧,你的Timer 设置了毫秒延迟,所以你只会得到一次,如果你想重复,你将不得不使用schedule(TimerTask, long, long)。你也可以使用两个Timers,一个重复,一个不重复的不同间隔的集合。如果您想要一个Timer,那么您需要确定它何时首次激活,计算执行之间的时间并确定要做什么。超过阈值(即 5 秒)后,取消计时器并执行其他操作
  • @cricket_007 如果使用正确,Timer 是一个(某种)循环

标签: java timer


【解决方案1】:

如果你的意图是循环,你应该使用schedule的重载方法而不是Timer

timer.schedule(TimerTask task, long delay, long period);

这将安排指定的任务进行重复固定延迟执行,在指定的延迟之后开始。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    相关资源
    最近更新 更多