Java 타이머(Timer, TimerTask) 상세 정보 및 인스턴스 코드

Java 타이머
JAVA에서 타이머 기능을 실현하는 데 사용할 두 가지 종류는 Timer, TimerTask
Timer 클래스는 작업을 수행하는 클래스로 TimerTask를 매개 변수로 사용합니다.
Timer는 두 가지 작업 수행 모드가 있는데 가장 자주 사용하는 것은 schedule입니다. 두 가지 방식으로 작업을 수행할 수 있습니다. 1: 특정한 시간(Data), 2: 특정한 시간 이후(int delay).이 두 가지 방식은 모두 임무 집행의 빈도를 지정할 수 있다. 본고는 두 가지 예가 있는데 하나는 간단한 것이고 하나는 내부 클래스를 사용한 것이다.
1. 간단한 실례
일단 클래스를 하나 써볼게요.

public class TimeTest {
public static void main(String[] args) {
  
   Timer timer = new Timer();
   timer.schedule(new MyTask(),1000,2000);
}

그리고 또 클래스를 쓰도록 하겠습니다.

public class MyTask extends TimerTask{

  @Override
  public void run() {
 System.out.println(" ");    
  }
}

이렇게 하면 간단한 타이머를 완성할 수 있지만, 또 하나의 방법은 이 두 종류를 한 종류, 즉 내부 종류에 기록하는 것이다
2. 내부 클래스

public class SerchRun {

  protected static void startRun(){
    Timer timer = new Timer();
     TimerTask task =new TimerTask(){
       public void run(){
         System.out.println(" "); // 
       }
     };
   timer.scheduleAtFixedRate(task, new Date(),2000);//   2 
   // timer.scheduleAtFixedRate(task, 1000,2000); // 1   2          
   }
  
  public static void main(String[] args) {
   SerchRun.startRun();
  }
}

schedule과 schedule AtFixedRate의 차이점은 실행 시작 시간이 현재 시스템 운행 시간 이전에 지정되면, schedule AtFixedRate는 이미 지나간 시간도 주기로 실행하고, schedule는 과거의 시간을 포함하지 않는다는 것이다.
예:

SimpleDateFormat fTime = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
 Date d1 = fTime.parse("2005/12/30 14:10:00");
 
 t.scheduleAtFixedRate(new TimerTask(){
  public void run()
  {
    System.out.println("this is task you do6");
  }
 },d1,3*60*1000);

간격은 3분이고 시작 시간은 2005/12/30 14:10:00입니다. 만약 제가 14:17:00분에 이 프로그램을 실행한다면 즉시 세 번 인쇄할 것입니다

this is task you do6   //14:10
this is task you do6   //14:13
this is task you do6   //14:16

그리고 다음 실행은 14:19에서 14:20이 아니라는 것을 주의하십시오.지정된 시작 시간부터 시간을 재는 것이지 실행 시간부터 시간을 재는 것이 아니다.
그러나 위에서 schedule 방법을 사용하면 간격이 3분이고 지정한 시작 시간은 2005/12/30 14:10:00이며 14:17:00에 이 프로그램을 실행하면 즉시 프로그램을 한 번 실행합니다.그리고 다음 실행 시간은 14:20이지 14:10부터 계산하는 주기(14:19)가 아니다.
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기