0

I have an if statement which evaluates the time since the program has begun running and if the time is above a certain threshold, does something. I want this if statement to be checked throughout the whole time the program is running while at the same time have the program continue execution. How would I go about doing this?

Thank you.

4

1 回答 1

0

最简单的方法是使用Timer. 有了这个,你就不需要if逻辑了。您可以firstTime在安排TimerTask.

Timer timer = new Timer();
TimerTask task = new TimerTask() {
    @Override
    public void run() {
        // do something
    }
};
// schedule the task to be run every 100ms (0.1 sec),
// starting after "threshold" milliseconds have past
timer.schedule(task, threshold, 100);

从您的描述中不清楚您是想在超过时间阈值后重复“做某事”,还是只想等到某个时间过去后再“做某事”一次。上面的代码是针对重复情况的。对于未来某个时间的一次性事件,将最后一行更改为:

timer.schedule(task, threshold);

如果你使用 Swing,你应该使用 Swing Timer而不是 java.util.Timer。有关更多信息,请参阅如何使用摆动计时器

编辑:您的评论澄清了一些事情。做你描述的事情相当容易:

Timer timer = new Timer();
TimerTask task = new TimerTask() {
    private final long start = System.currentTimeMillis();
    @Override
    public void run() {
        if (System.currentTimeMillis() - start < threshold) {
            // do something
        } else {
            // do something else
        }
    }
};
// schedule the task to be run every 100ms (0.1 sec), starting immediately
timer.schedule(task, 0, 100);

请注意,“做某事”和“做其他事情”可以是对封闭类的方法调用。

一种更简洁的方法可能是定义几个TimerTask计划在不同时间执行的 s。触发异常的“其他”任务可以安排在阈值时间一次性执行。您还可以取消单个任务,甚至可以安排将取消另一个任务的任务。

于 2013-07-24T14:36:23.647 回答