java.util.Timer 재시작 하는방법 [Timer already cancelled.]

Posted by 대혀니_
2017. 6. 30. 23:48 PROGRAMING/Java

결론부터 말하자면 Timer는 재시작 할 수 없다.


cancel 하고 재시작 하려면 Timer already cancelled. ~ timer cancel Task already scheduled or cancelled

이런거만 나온다... 취소했는데 재시작 한다고..  어떻게 해야되는데~~


그냥 이런식으로 짜야한다. 그냥 새로 선언하는 방법 밖에 없다고 한다. 그래서 새로 생성하는 메소드를 만들어줌..



public void tempTask() {
	TimerTask task = new TimerTask() {
		@Override
		public void run() {
	
		//todo
		}
	};	
	tmr = new Timer();
	tmr.schedule(task, 0, 1000);
}

//멈출때
tmr.cancel();

//다시 재시작 할때
tempTask();


Thread.sleep 이 swing 같은 java gui 기반에서 쓰면 문제 생겨서 (Thread.sleep 동안 gui도 같이 멈춰버림)

그래서 Timer를 쓰게 되었는데 재시작이 안되서...


만약 Timer 의 간격을 바꾸고 싶을때도 따로 메소드가 없고 tempTask 에 파라메타 넘겨서 해줘야 한다는 것...

왜 이렇게 불편하게 만든것인가..