일주일에 한번, 하루에 한번 작업을 수행하는 프로세스를 실행하고 싶을 때가 있을 껍니다.
한가한 시간에 자동으로 배치작업을 실행하는 등의 작업을 자바에서 수행할 수 있습니다.
Timer라는 클래스에다가 시작날짜, 시간을 설정한 뒤, TimerTask클래스를 상속받은 클래스에서 run메소드를 구현하게 되면 설정된 시간에 run메소드가 자동으로 수행되게 됩니다.

코드를 보도록 합시다.

[code]
package com.mudchobo.scheduler;

import java.util.TimerTask;

public class WeeklySearch extends TimerTask {

 @Override
 public void run() {
  System.out.println("WeeklySearch!");
 }
}
[/code]
TimerTask를 상속받아서 run메소드를 구현했습니다. run메소드는 간단히 WeeklySearch라고 보여주는군요.

그럼 메인을 보도록 합시다.
[code]
package com.mudchobo.scheduler;

import java.util.Calendar;
import java.util.Timer;

public class Scheduler {

 public static void main(String[] args) {
  WeeklySearch weeklySearch = new WeeklySearch();
 
  Timer timer = new Timer();
  Calendar date = Calendar.getInstance();
  date.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
  date.set(Calendar.AM_PM, Calendar.PM);
  date.set(Calendar.HOUR, 11);
  date.set(Calendar.MINUTE, 29);
  date.set(Calendar.SECOND, 0);
  date.set(Calendar.MILLISECOND, 0);
 
  timer.scheduleAtFixedRate(weeklySearch, date.getTime(),
    1000 * 60 * 60 * 24 * 7);
 }
}
[/code]
Timer객체, Calendar객체를 선언합니다. Calendar객체에는 이 스케쥴이 시작될 시간을 설정해서 넣습니다. 그 뒤에 timer에 있는 scheduleAtFixedRate메소드에 첫번째 인자는 맨 위에서 생성한 TimerTask객체를 넣으면 되구요. 두번째는 이 스케쥴이 시작될 시간을 설정해서 넣으면 되구요. 3번째는 얼마만큼의 주기로 실행될 지 기간을 설정하게 됩니다.
밀리초여서 1000밀리초 * 60초 * 60분 * 24시간 * 7일 하게 되면 저것은 1주일에 한번 실행되게 됩니다.

이상입니다!

 
Posted by 머드초보
,