2016-10-03 1 views
0

나는 타이머 작업이 있습니다변경 타이머 간격 동적으로 자바 1.4

long timerSec = 5000; 

TimerTask task1 = new TimerTask() 
{ 
    public void run() 
    { 
     //Some code... 
     System.out.println("Timer task..."); 
    } 
}; 

그리고 타이머 객체는 다음과 같이 : 나는 5 초 기간 사이에 작업을 예정

Timer readFileTimer = new Timer(); 

두 번의 연속 작업 실행.

readFileTimer.scheduleAtFixedRate(task1, 0, timerSec); 

아래 코드 줄은 새로운 기간을 할당합니다. 타이머를 5 초에서 n 초로 변경하고 싶습니다 (timerSec 값으로 10 초를 말합니다).

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