我有一个if语句,用于评估自程序开始运行以来的时间,如果时间超过某个阈值,则执行某些操作。我希望在程序运行的整个过程中检查if语句,同时让程序继续执行。我该怎么做呢?
谢谢。
答案 0 :(得分:0)
最简单的方法是使用Timer
。有了它,你不需要if
逻辑;您可以在安排TimerTask
时使用firstTime
参数。
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。有关详细信息,请参阅How to Use Swing Timers。
编辑:您的评论澄清了一些事情。做你所描述的很容易:
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
。触发异常的“其他”任务可以安排在阈值时间执行一次。您还可以取消单个任务,甚至可以安排取消其他任务的任务。