주기적으로 실행되거나 특정 시간에 작업을 실행할 수 있게 해주는 스케줄링 기능이다. 주로 백그라운드에서 일괄 작업을 실행하거나 주기적으로 특정 작업을 실행해야 할 때 사용된다.
@Scheduled어노테이션을 사용하여 스케쥴러를 등록할 수 있다.@EnableScheduling어노테이션을 사용하여 스케쥴러를 활성화할 수 있다.Cron 표현식을 사용하여 특정 시간에 스케쥴러를 실행할 수 있다.FixedRate,FixedDelay를 사용하여 주기적으로 스케쥴러를 실행할 수 있다.ThreadPoolTaskScheduler를 사용하여 스케쥴러를 커스터마이징할 수 있다.@Async어노테이션을 사용하여 비동기로 스케쥴러를 실행할 수 있다.
스케쥴러는 기본적으로 싱글 스레드로 동작한다. 따라서 스케쥴러가 실행되는 동안 다른 스케쥴러가 실행되지 않는다.
따라서 스케쥴러가 실행되는 시간이 오래 걸리거나 스케쥴러가 실행되는 주기가 짧다면 스케쥴러가 끝날 때까지 다른 스케쥴러가 실행되지 않는다.
그래서 ThreadPoolTaskScheduler를 사용하여 스케쥴러를 커스터마이징하여 스레드 풀을 사용할 수 있다.
스레드 풀을 사용해도 스케쥴러가 실행되는 동안 다른 스케쥴러가 실행되지 않는다. 다른 스레드만 사용하지 동기적으로 실행된다. 비동기를 이용하면 스케쥴러가 실행되는 동안 다른 스케쥴러가 실행될 수 있다.