Spring TaskScheduler
1. Spring TaskScheduler
- Spring은 미래의 특정 시점에 실행할 작업을 예약하기 위한 다양한 메서드가 있는 TaskScheduler SPI를 제공합니다.
- Spring의 TaskScheduler는 Java 애플리케이션에서 작업 스케줄링을 관리하기 위한 추상화 계층을 제공합니다.
- 이러한 추상화로 인해 아래와 같은 이점이 있습니다.
- 애플리케이션 코드와 실제 스레드 관리 방식을 분리
- 다양한 환경(로컬, 서버 등)에 동일한 코드로 배포 가능
- 특히 엔터프라이즈 환경에서 스레드 관리 정책 준수 용이
1.1 TaskScheduler 인터페이스
- 다음은 TaskScheduler 인터페이스 정의입니다
public interface TaskScheduler {
Clock getClock();
ScheduledFuture schedule(Runnable task, Trigger trigger);
ScheduledFuture schedule(Runnable task, Instant startTime);
ScheduledFuture scheduleAtFixedRate(Runnable task, Instant startTime, Duration period);
ScheduledFuture scheduleAtFixedRate(Runnable task, Duration period);
ScheduledFuture scheduleWithFixedDelay(Runnable task, Instant startTime, Duration delay);
ScheduledFuture scheduleWithFixedDelay(Runnable task, Duration delay);
}
- 가장 간단한 메서드는 Runnable과 Instant만 받는 schedule 메서드입니다.
- 이는 지정된 시간 이후에 작업이 한 번 실행되게 합니다.
- 다른 모든 메서드는 작업을 반복적으로 실행하도록 예약할 수 있습니다.
- fixed-rate와 fixed-delay 메서드는 단순한 주기적 실행을 위한 것이지만, Trigger를 받는 메서드는 훨씬 더 유연합니다.