반응형
https://docs.oracle.com/javase/8/docs/api/java/util/Timer.html
Timer(java.util.Timer)
- 백그라운드 스레드에서 특정 작업을 일정 시간 뒤 실행하거나, 주기적으로 반복 실행 할 수 있도록 도와주는 클래스
특징
- 백그라운드에서 실행됨
- 내부적으로 싱글스레드를 사용하여 작업을 실행 내부적으로 싱글스레드를 사용하여 작업을 실행
- Thread-safe 하여 여러 스레드에서 Timer 객체 공유 가능
- 한 번 실행 또는 반복 실행 가능
- schedule() : 일정 시간이 지난 후 한 번만 실행
- scheduleAtFixedRate() / schedule() : 일정 시간마다 반복 실행
메소드 | 실행방식 | 작업이 오래 걸릴 경우 | 실행 주기 |
---|---|---|---|
schedule() | Fixed-delay(고정 지연) | 다음 실행이 지연됨 | 이전 작업 종료 + 지정된 delay 후 실행 |
scheduleAtFixedRate() | Fixed-rate(고정 속도) | 일정한 주기를 유지하려고 함(Burst 가능) | 지정된 주기(period)마다 실행됨 |
- 타이머 스레드는 기본적으로 daemon(데몬)이 아님
- main스레드가 종료되어도 타이머 스레드가 실행 중이면 프로그램이 종료되지 않음
- isDaemon 옵션을 true로 설정하면 데몬 스레드로 실행 가능
- 작업이 너무 오래 걸리면 다른 작업이 지연될 수 있음
- Timer는 single-threaded(단일 스레드)이므로, 하나의 작업이 오래 걸리면 다음 작업이 지연됨
- Java 5 이후에는 ScheduledThreadPoolExecutor를 사용하는 것이 더 좋음
단점
- single thread로 동작 -> 하나의 작업이 오래 걸리면 다음 작업이 지연됨
- 작업이 예외(Exception)로 종료되면 타이머 스레드도 종료됨 -> 예외가 발생하면 타이머가 더 이상 동작하지 않음
메소드
메소드 | 설명 |
---|---|
schedule(TimerTask task, long delay) | delay 밀리초 후 한 번 실행 |
schedule(TimerTask task, long delay, long period) | delay 밀리초 후 실행, 이후 period 밀리초마다 반복 실행 |
scheduleAtFixedRate(TimerTask task, long delay, long period) | delay 밀리초 후 실행, 이후 period 밀리초 간격으로 반복 실행 |
cancel() | 타이머 종료(모든 예약된 작업 취소) |
purge() | 취소된 작업을 제거하여 메모리 확보 |
반응형
'JAVA > Java Platform, Standard Edition' 카테고리의 다른 글
[공식 문서] 자바 스레드(Thread) 완벽 가이드 : 생성부터 동기화까지 (0) | 2025.02.10 |
---|---|
[공식 문서] 자바 날짜/시간 포맷(DateFormat) 변환 완벽 가이드 (0) | 2025.02.10 |
[공식 문서] 멀티스레딩 구현을 위한 기본 인터페이스(Runnable) (0) | 2025.02.10 |
[공식 문서] JTree와 트리 구조 데이터를 위한 데이터 모델(TreeModel) (0) | 2025.02.10 |
[공식 문서] Swing을 통한 GUI 어플리케이션 개발 : javax.swing 패키지 (2) | 2025.02.03 |