根据先前运行的结果安排定期任务

时间:2013-02-26 12:24:22

标签: java multithreading concurrency scheduled-tasks

我需要每X秒执行一次任务 我知道我可以使用TimerTaskScheduledThreadPool,但我的问题是此任务取决于州。
即任务在运行B中将执行的操作取决于运行A的结果 编码的最佳方法是什么?
或许做一个

while(true){  
  //do stuff  
  Thread.sleep(5000);  
}  

是我能在这做的最好的吗?

2 个答案:

答案 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的文档,此方法

  

为重复的固定延迟执行安排指定的任务,   在指定的延迟后开始。随后的执行将会发生   按规定的时间间隔按规定的时间间隔分开。