코딩마을방범대
Java의 타이머 (Timer) 본문
728x90
JDK 1.3에 추가되었던 java.util.Timer 클래스와 java.util.TimerTask 클래스를 이용하면
백그라운드에서 특정한 시간 또는 일정 시간을 주기로 반복적으로 특정 작업을 실행할 수 있도록 해준다.
java.util.Timer
Timer 클래스는 아래와 같이 3가지 메소드를 제공한다.
Timer timer = new Timer();
// true를 주게 되면 데몬 스레드를 사용하게 된다고 한다.
Timer timer = new Timer(true);
schedule
메소드 | 설명 |
schedule(TimerTask task, Date time) | 설정한 time 시간에, 설정한 task 작업을 수행 |
schedule(TimerTask task, Date firstTime, long period) | firstTime 부터 period 간격으로 task 작업을 수행 |
schedule(TimerTask task, long delay) | delay 시간이 지난 후에, task를 수행 |
schedule(TimerTask task, long delay, long period) | dealy 시간이 지난 후에, period 간격으로 task를 수행 |
Date를 설정하는 메소드 : 만약 지정한 시간이 현재 시간보다 이전일 경우 바로 task 작업을 수행
delay를 설정하는 메소드 : fixed-delay 방식은 선행 작업이 지연될 경우, 다음에 수행되는 작업 역시 그 시간만큼 지연되는 방식
scheduleAtFixedRate
메소드 | 설명 |
scheduleAtFixedRate(TimerTask task, Date firstTime, long period) | 지정한 시간부터 일정한 간격으로 task를 수행 |
scheduleAtFixedRate(TimerTask task, long delay, long period) | 일정한 시간(delay)가 지난 후 일정한 간격으로 task를 수행 |
schedule의 delay를 설정하는 메소드와는 다르게
fixed-rate 방식을 사용하는데, 선행 작업의 지연 유무에 상관없이 지정된 시간에 작업을 실행함
cancel
Timer를 중지시키며, 실행 중인 task 작업을 제외한 예정된 작업들은 모두 취소
java.util.TimerTask
TimerTask 클래스는 Timer 클래스가 수행할 작업
메소드 | 리턴값 | 설명 |
cancel() | boolean | TimerTask 작업을 취소 |
run() | void | TimerTask가 실행할 작업 |
scheduledExecutionTime() | long | 가장 최근에 작업이 실행된 시간을 리턴 |
예시.
@NoArgsConstructor
public class TaskTest extends TimerTask {
@Override
public void run() {
...
}
}
참고사이트
[Java] Timer, TimerTask 클래스를 이용한 스케쥴링
728x90
'💡 백엔드 > Java' 카테고리의 다른 글
Optional에 대하여 (0) | 2023.07.25 |
---|---|
웹 소켓을 이용한 메시지 전송 프로세스의 이해 (1) | 2023.07.13 |
Guava Cache (0) | 2023.06.20 |
SpringBoot의 @Qualifier와 @Primary (0) | 2023.06.20 |
CrudRepository, PagingAndSortingRepository와 JpaRepository의 차이 (0) | 2023.06.20 |