2014-04-15 1 views
2

Java.Util.Timer 을 사용하여 초까지 계산할 수있는 간단한 프로그램을 만들고 싶습니다. 아래 코드는 내가 사용하고있는 코드이며, 간단히 모든 숫자를 출력합니다 한 번씩 기다리지 않고 한 번씩. 어떻게 수정하겠습니까? (일반적으로 나는 Thread.sleep를을 사용하지만이 개념의 단지 증거입니다.)Java.Util.Timer 사용 방법

import java.util.Timer; 
import java.util.TimerTask; 

public class Main { 
    static Timer timer = new Timer(); 
    static int seconds = 0; 

    public static void main(String[] agrs) { 

     MyTimer(); 

    } 

    public static void MyTimer() { 

     TimerTask task; 

     task = new TimerTask() { 
      @Override 
      public void run() { 
       while (seconds < 100) { 
        System.out.println("Seconds = " + seconds); 
        seconds++; 
       } 
      } 
     }; 
     timer.schedule(task, 0, 1000); 

    } 

}} 

답변

3

이 while 루프를 사용하지 마십시오 지연이 없기로

task = new TimerTask() { 
     @Override 
     public void run() { 
      while (seconds < 100) { 
       System.out.println("Seconds = " + seconds); 
       seconds++; 
      } 
     } 
    }; 

루프는 즉시 실행하면서 그것의 내부. Timer 자체를 루프로 사용하려는 경우이 루프가 필요하지 않습니다.

대신에 if 블록을 사용하여 숫자가 < 일부 최대 숫자인지 확인하십시오. 그렇다면 숫자를 인쇄하고 증분하십시오.

task = new TimerTask() { 
     private final int MAX_SECONDS = 100; 

     @Override 
     public void run() { 
      if (seconds < MAX_SECONDS) { 
       System.out.println("Seconds = " + seconds); 
       seconds++; 
      } else { 
       // stop the timer 
       cancel(); 
      } 
     } 
    }; 
관련 문제