스레드풀

SchedulingConfigurer
@Scheduled(fixedDelay=1000)
public void test1() throws InterruptedException{
Thread.sleep(10000);
System.out.prinln(Thread.currentThread().getName());
}
@Scheduled(fixedDelay=1000)
public void test1() throws InterruptedException{
System.out.prinln(Thread.currentThread().getName());
}
스케줄러 스레드는 별도의 스레드 설정이 없으면 단일 스레드 이기때문에 test1와 test2가 하나의 스레드를 번갈아가면서 사용.
다만 하나의 메소드가 완료된후 다음 메소드가 실행됨
스프링 프레임워크의 스케줄링 기능을 사용할때 스케줄링 구성을 커스터마이징 하기 위한 인터페이스
-> 스케줄러의 동작방식을 세부적으로 설정하거나 조정할 필요가 있을때 사용
@Configuration
public class SchedulerConfig implements SchedulingConfigurer {
private final int POOL_SIZE = 10;
@Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
scheduler.setPoolSize(POOL_SIZE);
scheduler.setThreadNamePrefix("scheduled-task-");
scheduler.initialize();
scheduledTaskRegistrar.setTaskScheduler(scheduler);
}
}