반응형
SMALL
쓰레드 풀 설정
기본적으로 @EnableScheduling 어노테이션을 사용 시 작업을 실행할 스케줄링을 위해서 스레드가 하나만 있는 스레드 풀을 만듭니다. @Scheduled 작업은 대기열에 쌓이게 되며 단일 스레드에 의해서만 실행됩니다.
여러 작업을 제시간에 맞추어서 실행하기 위해서는 스레드를 늘릴 필요가 있을 것입니다. SchedulingConfigurer 인터페이스를 구현하여 설정을 변경할 수 있습니다.
setThreadNamePrefix를 이용하여 로그로 남길시 현재 실행하는 쓰레드 명 Prefix를 붙일 수 있습니다.
@Configuration
public class SchedulerConfig implements SchedulingConfigurer {
@Value("${thread.pool.size}")
private int POOL_SIZE;
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
scheduler.setPoolSize(POOL_SIZE);
scheduler.setThreadNamePrefix("현재 쓰레드-");
scheduler.initialize();
taskRegistrar.setTaskScheduler(scheduler);
}
}
thread.pool.size는 application.yml 파일을 통하여 3개로 늘려줍니다.
thread:
pool:
size: 3
[ 현재 쓰레드-2] com.covenant.schedule.ScheduledTasks : 현재시간 - 50:12:760
[ 현재 쓰레드-3] com.covenant.schedule.ScheduledTasks : 현재시간 - 50:13:763
[ 현재 쓰레드-1] com.covenant.schedule.ScheduledTasks : 현재시간 - 50:13:763
[ 현재 쓰레드-1] com.covenant.schedule.ScheduledTasks : 현재시간 - 50:13:766
setThreadNamePrefix 지정한 이름으로 현재 쓰레드라는 쓰레드 명이 추가되었으며 쓰레드 3개로 작업을 수행하는 것을 확인할 수 있습니다.
'Spring & Spring Boot' 카테고리의 다른 글
Springboot - ResponseEntity란? (0) | 2023.02.15 |
---|---|
Springboot - Lombok 라이브러리에서 자주 사용하는 애노테이션 (0) | 2023.02.14 |
Springboot & Vue3.js - 쿠키 , 세션을 이용한 로그인 처리 (1) | 2023.01.12 |
Springboot & Vue3.js - 암호화된 비밀번호 검증 - BcryptPasswordEncoder (0) | 2023.01.11 |
Springboot & Vue3.js - 비밀번호 암호화 - BcryptPasswordEncoder (0) | 2023.01.11 |
댓글