Timer — 백그라운드 스레드에서 작업 예약

Timer — 백그라운드 스레드에서 작업 예약

스레드가 백그라운드 스레드에서 미래에 실행될 작업을 예약할 수 있게 하는 시설(facility)이에요. 작업은 일회성 실행 또는 정기 간격의 반복 실행으로 예약될 수 있어요.

출처: Java API Reference

본문

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는 이 클래스보다 더 다재다능한 스레드 풀 기반 대안이에요.

더 알아보기 (Learn more)