상세 컨텐츠

본문 제목

[JAVA] Timer / TimerTask - 잠시 후에 실행

JAVA Language

by mobile 2012. 7. 28. 22:02

본문

반응형

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 Language' 카테고리의 다른 글

[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

관련글 더보기

댓글 영역