我需要每1秒检查一次java中的某些条件,直到它为真。如果是真的,需要退出并继续进行。
说a-> b-> c 每1秒检查一次,直到它为真,如果是,则转到c。
有人可以建议在Java中实现这一目标的最佳方法是什么?
答案 0 :(得分:4)
我认为您应该查看Timer
和TimerTask
类。您可以使用它们来安排某些任务在一定时间后完成。
您需要扩展“TimerTask”'类并覆盖run()
方法。例如,你可以这样做:
这是一个例子,每5秒打印一次Hello World
: -
class CheckCondition extends TimerTask {
public void run() {
// if some condition is true
// do something
}
}
从另一种方法中使用,该方法每秒检查一次你的情况(该函数需要几毫秒):
Timer timer = new Timer();
// timer.schedule(class, initial delay, interval in milliseconds)
timer.schedule(new CheckCondition(), 0, 1000);
答案 1 :(得分:4)
以下是您的需求:
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if(!condition)
handler.postDelayed(this, 1000);
else {
// do actions
condition = true;
}
}
}, 1000);
}
答案 2 :(得分:3)
一种选择是使用Handler的postDelayed()方法:
// do something A
do {
// Execute some code after 1 second has passed
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
// do something B
}
}, 1000);
}
while(condition);
// do something C