0

我需要每秒钟执行一次任务X
我知道我可以使用TimerTaskorScheduledThreadPool但我的问题是这个任务取决于状态。
即任务将在 run 中执行的操作B取决于 run 的结果A
编写此代码的最佳方法是什么?
也许做一个

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

我在这里能做的最好吗?

4

2 回答 2

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 毫秒)。

于 2013-02-26T12:27:58.937 回答
1

我认为您可以将 aTimer与 a 一起使用TimerTask

Timer timer = new Timer();
TimerTask task = new TimerTask() {
    @Override
    public void run() {
        // Some task
    }
};
timer.schedule(task, 10000, 10000);

在初始第一次task延迟.10s10s

根据文档Timer.schedule,此方法

安排指定任务以重复固定延迟执行,在指定延迟后开始。随后的执行以大约固定的时间间隔进行,间隔指定的时间段。

于 2013-02-26T12:34:11.220 回答