Java Timer (Timer , TimerTask) - Timer 초기화 후 다시 실행하기
Timer 기능은 java.util.Timer 와 java.util.TimerTask 를 사용하면 된다.
(※해당 기능을 사용하는 방법은 구글에 엄청나게 많으니까 해당 내용을 참고하시면 될 것 같습니다.저는 타이머를 초기화 하고 다시 실행하는 방법에 관해서만 기술하겠습니다.)
Timer를 초기화 하고 다시 실행함에 있어서 계속 예외가 발생하는데 크게 2가지로 볼 수 있다.
해당 문제가 발생하는 이유는 Timer를 한번 Cancle 하게 되면 Timer 와 TimerTask 모두 날아가기 때문이다. (Timer는 내가 Cancle 했으므로 이해를 하는데 TimerTask는 왜 날아가는지 ...)
TimerTask는 검색결과 어떤 방법으로도 살릴수없는듯하다.
아무튼 그래서 초기화 후 다시 사용하려면 둘 다 새로 만들어서 사용을 해야한다.
초기화 후 다시 사용하는 예제 코드를 첨부한다.
class Example{
public static void setTimerTask(Timer ti) {
TimerTask tt = new TimerTask() {
@Override
public void run() {
System.out.println("Run~~~");
}
};
ti.scheduleAtFixedRate(tt, 1100, 1000); // 1.1 초 Delay를 가진 후 시작하며
//1초 마다 Timer Task 의 run 메소드가 실행된다.
}
public static void start() {
while (true){
final Timer ti = new Timer();
setTimerTask(ti);
/*
~~~ 필요한 code 삽입
*/
ti.cancel();
}
}
}