Timer — 백그라운드 스레드에서 작업 예약
Timer — 백그라운드 스레드에서 작업 예약
스레드가 백그라운드 스레드에서 미래에 실행될 작업을 예약할 수 있게 하는 시설(facility)이에요. 작업은 일회성 실행 또는 정기 간격의 반복 실행으로 예약될 수 있어요.
본문
public class Timer extends Object
각 Timer 객체에는 타이머의 모든 작업을 순차적으로 실행하는 단일 백그라운드 스레드가 대응돼요. 타이머 작업은 신속하게 완료되어야 해요. 작업이 과도한 시간이 걸리면 타이머의 작업 실행 스레드를 "독점"해, 이후 작업의 실행이 지연될 수 있어요.
기본적으로 작업 실행 스레드는 데몬 스레드로 실행되지 않으므로 애플리케이션이 종료되지 않게 유지할 수 있어요. 작업 실행 스레드를 신속히 종료하려면 타이머의 cancel 메서드를 호출해야 해요. 타이머의 작업 실행 스레드가 예기치 않게 종료되면 이후 예약 시도는 마치 취소된 것처럼 IllegalStateException을 던져요.
이 클래스는 스레드 안전해요. 여러 스레드가 외부 동기화 없이 단일 Timer 객체를 공유할 수 있어요. 다만 실시간 보장은 제공하지 않아요.
주요 생성자
Timer()— 새 타이머를 생성해요. 결합된 스레드는 데몬 스레드로 실행되지 않아요.Timer(boolean isDaemon)— 결합된 스레드를 데몬으로 실행할지 지정해 새 타이머를 생성해요.Timer(String name)— 결합된 스레드에 이름을 붙여 새 타이머를 생성해요.
주요 메서드
schedule(TimerTask task, long delay)— 지정된 지연 후 지정된 작업을 실행하도록 예약해요.schedule(TimerTask task, Date time)— 지정된 시간에 작업을 실행하도록 예약해요.schedule(TimerTask task, long delay, long period)— 고정 지연(fixed-delay) 방식으로 반복 실행하도록 예약해요.scheduleAtFixedRate(TimerTask task, long delay, long period)— 고정 속도(fixed-rate) 방식으로 반복 실행하도록 예약해요.cancel()— 이 타이머를 종료하고 현재 예약된 작업을 모두 버려요.
참고로 Java 5.0에서 도입된 java.util.concurrent 패키지의 ScheduledThreadPoolExecutor는 이 클래스보다 더 다재다능한 스레드 풀 기반 대안이에요.