我有一个计时器任务,如下所示:
long timerSec = 5000;
TimerTask task1 = new TimerTask()
{
public void run()
{
//Some code...
System.out.println("Timer task...");
}
};
和计时器对象,如下所示:
Timer readFileTimer = new Timer();
我安排了一个任务,在两个连续的任务执行之间有5秒的间隔。
readFileTimer.scheduleAtFixedRate(task1, 0, timerSec);
下面的代码行分配新的时间段。我想将时间周期从5秒更改为n秒(假设10秒w.r.t. timerSec值)。
timerSec = CalculateTimeForUpgrade(); //Get new timer interval period.
我尝试了下面的代码,但没有得到预期的结果。
readFileTimer.scheduleAtFixedRate(task1, 0, timerSec);
请帮助。
每次完成任务后重新安排任务,而不是从一开始就以固定的间隔开始任务。像这样:
final Timer readFileTimer = new Timer();
readFileTimer.schedule(new MyTimerTask(), 0);
.......
private class MyTimerTask extends TimerTask() {
@Override
public void run() {
// Some code...
System.out.println("Timer task...");
if (readFileTimer!=null)
readFileTimer.schedule(new MyTimerTask(), CalculateTimeForUpgrade());
}
}