我需要每X
秒执行一次任务
我知道我可以使用TimerTask
或ScheduledThreadPool
,但我的问题是此任务取决于州。
即任务在运行B
中将执行的操作取决于运行A
的结果
编码的最佳方法是什么?
或许做一个
while(true){
//do stuff
Thread.sleep(5000);
}
是我能在这做的最好的吗?
答案 0 :(得分:2)
只需在TimerTask实现中定义您的状态,然后使用Timer
:
TimerTask task = new TimerTask ()
{
private int state = 0;
@Override
public void run ()
{
System.out.println ("State is: " + state);
state += 1;
}
};
new Timer ().schedule (task, 0L, 1000L);
这将永远每隔一秒(每1000L毫秒)运行一次任务。
答案 1 :(得分:1)
我认为您可以Timer
使用TimerTask
:
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
// Some task
}
};
timer.schedule(task, 10000, 10000);
首次首次延迟task
后,每10s
10s
运行一次。
根据Timer.schedule
的文档,此方法
为重复的固定延迟执行安排指定的任务, 在指定的延迟后开始。随后的执行将会发生 按规定的时间间隔按规定的时间间隔分开。