2016-10-03 1 views
0

У меня есть задание таймера, как показано ниже:Изменение интервала таймера динамически в Java 1.4

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); 

Пожалуйста, помогите. Заранее спасибо.

ответ

0

Вместо того, чтобы начинать задание с фиксированным интервалом с самого начала, перенести задачу каждый раз, когда вы ее завершите. Что-то вроде этого:

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()); 
     } 
    } 
Смежные вопросы