Timer와 TimerTask를 이용하면 지정된 시간에 어떤 로직을 실행하게 하여 줄 수 있습니다. 하루 한번 혹은 분마다 작업되는 로직을 만들 때 필요합니다.
▶ 지정된 시간에 수행될 작업을 java.util.TimerTask 클래스를 상속해서 구현해 준다.
▶ Timer 객체를 만들고 지정된 시간을 넣어준다.
[실행원리]
Timer라는 객체가 지정된 시간이 되면 알아서 TimerTask로 만들어진 객체를 동작시킵니다. Timer 객체가 일종의 감시자나 감독관이라고 할 수 있을 겁니다. 개발자는 원하는 객체를 만들 때 단 하나의 제약인 TimerTask를 상속해서 만들어주면 됩니다.
▶ TimerTask 클래스를 상속해서 원하는 작업을 설정합니다.
: TimerTask는 추상 클래스 입니다. 따라서 상속해서 구현하게 되면 가진 추상 메소드를 자식 클래스에서 구현하게 됩니다.
▶ Timer에 schedule로 등록합니다.
: 다음 작업은 Timer에 말 그대로 원하는 TimerTask 타입의 객체를 스케줄로 등록해주는 작업니다. 이때 schedule로 등록하기 위해서는 두 가지를 이용할 수 있습니다.
- long : 몇 밀리세컨드(ms) 이후에 실행할 것인지를 지정
- java.util.Date : 지정된 시간에 Date로 지정
import java.util.TimerTask;
public class MyTimeTask extends TimerTask {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("이것은 제가 원하는 작업입니다.");
}
}
import java.util.TimerTask;
public class YourTimeTask extends TimerTask {
@Override
public void run() {
// TODO Auto-generated method stub
}
}
import java.util.Timer;
import java.util.TimerTask;
public class ClassTest {
public static void main(String[] args) throws InterruptedException {
// daemon 으로 지정.
Timer t = new Timer(true);
TimerTask task1 = new MyTimeTask();
System.out.println("task1 은 잠시 후에 실행됩니다.");
TimerTask task2 = new YourTimeTask();
System.out.println("task2는 10초 후에 실행됩니다.");
t.schedule(task1, 1000);
t.schedule(task2, 10000);
Thread.sleep(11000); // 실행 시까지 대기
System.out.println("이제 모든 것을 종료합니다.");
}
}
결과
task1 은 잠시 후에 실행됩니다.
task2는 10초 후에 실행됩니다.
이것은 제가 원하는 작업입니다.
이제 모든 것을 종료합니다.
[Java] File Copy 예제. (0) | 2012.07.31 |
---|---|
[JAVA]예외 처리 (0) | 2012.07.28 |
[JAVA] BigDecimal - 정확한 소수 표현 (0) | 2012.07.28 |
[JAVA] Date, Calendar, long - 시간처리 (0) | 2012.07.28 |
[JAVA] String Class - 01 (0) | 2012.07.27 |
댓글 영역