Java Timer (Timer , TimerTask) - Timer 초기화 후 다시 실행하기

Denia·2022년 1월 22일
0

Java Timer (Timer , TimerTask) - Timer 초기화 후 다시 실행하기

Timer 기능은 java.util.Timer 와 java.util.TimerTask 를 사용하면 된다.
(※해당 기능을 사용하는 방법은 구글에 엄청나게 많으니까 해당 내용을 참고하시면 될 것 같습니다.저는 타이머를 초기화 하고 다시 실행하는 방법에 관해서만 기술하겠습니다.)

Timer를 초기화 하고 다시 실행함에 있어서 계속 예외가 발생하는데 크게 2가지로 볼 수 있다.

  1. Task already scheduled or cancelled
  2. Timer already cancelled.

해당 문제가 발생하는 이유는 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();
      }
    }
}


profile
HW -> FW -> Web

0개의 댓글