我需要每秒钟执行一次任务X
。
我知道我可以使用TimerTask
orScheduledThreadPool
但我的问题是这个任务取决于状态。
即任务将在 run 中执行的操作B
取决于 run 的结果A
。
编写此代码的最佳方法是什么?
也许做一个
while(true){
//do stuff
Thread.sleep(5000);
}
我在这里能做的最好吗?
我需要每秒钟执行一次任务X
。
我知道我可以使用TimerTask
orScheduledThreadPool
但我的问题是这个任务取决于状态。
即任务将在 run 中执行的操作B
取决于 run 的结果A
。
编写此代码的最佳方法是什么?
也许做一个
while(true){
//do stuff
Thread.sleep(5000);
}
我在这里能做的最好吗?
只需在 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 毫秒)。
我认为您可以将 aTimer
与 a 一起使用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
,此方法
安排指定任务以重复固定延迟执行,在指定延迟后开始。随后的执行以大约固定的时间间隔进行,间隔指定的时间段。