2012-12-14 6 views
11

java.util.Timer 오브젝트에 대해 isCancelled 메소드가없는 이유는 무엇입니까?Java 타이머가 취소되었는지 확인

타이머가 취소되지 않은 경우 작업을 예약하고 취소 된 경우 (동일한 스레드에서) 직접 실행하고 싶습니다.

타이머가 이미 취소 된 경우 발생할 수있는 IllegalStateException을 잡는 유일한 방법은 무엇입니까? (IllegalStateException을 붙잡는 것은 틀리게 느낀다).

답변

14

Timer을 어떻게 사용 하시겠습니까? 대신 isShutdownExecutorService을 사용하고 부팅하는 데 많은 이점이 있습니다. Java 5의 일반적인 권장 사항은 TimerExecutorService으로 바꾸는 것입니다.

예약 된 실행 프로그램 서비스를 위해 특별히 ScheduledExecutorService 인터페이스가 있습니다. Executors.new... 메서드 중 하나를 사용하여 인스턴스화하십시오.

+1

'Timer' 클래스가 더 이상 지원되지 않는다는 의미입니까? –

+3

네, 그렇게 말할 수 있습니다. 청구서에 맞는 경우 사용하고 그렇지 않으면 'ExecutorService'로 이동 한 후 되돌아 보지 마십시오. 두 번째 생각에서 조언조차도 위험합니다. Timer로 시작하여 프로젝트가 성장하면 ExecutorService로 시작하지 않은 것을 후회할 수 있습니다. –

+1

deprecated? 아니요,하지만 많은 업무에 부적합합니다. http://stackoverflow.com/questions/2213109/java-util-timer-is-it-deprecated –