我需要每X
秒执行一次任务。
我知道我可以使用TimerTask
或ScheduledThreadPool
但我的问题是这个任务取决于状态。
I.e.运行B
的任务将执行的操作取决于运行结果A
。
什么是最好的方法来编码?
这样做也许是根据前次运行的结果安排定期任务
while(true){
//do stuff
Thread.sleep(5000);
}
是我可以在这里做的最好?
我需要每X
秒执行一次任务。
我知道我可以使用TimerTask
或ScheduledThreadPool
但我的问题是这个任务取决于状态。
I.e.运行B
的任务将执行的操作取决于运行结果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毫秒),直到永远。
我想你可以使用一个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
的文档,这种方法
安排指定的任务进行重复的固定延迟执行,在指定的延迟后 开始。随后的执行以大约固定的时间间隔进行 ,由指定的时间段隔开。
我需要每X秒运行一次“永远” – Jim 2013-02-26 12:28:55
所以它只是总是调用'run'它不会重新创建可运行的? – Jim 2013-02-26 12:29:39
@Jim在我的例子中'run'永远在每个'TimerTask'的同一个实例上被调用。只是跑步,看看。 – 2013-02-26 12:31:54