스케줄러에서 virtual thread가 잘 종료되는지 확인해보자.
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
@Service
@Slf4j
public class VirtualScheduler {
@Scheduled(fixedRate = 5000)
public void fixedRate() {
log.info("fixedRate. thread: {}", Thread.currentThread());
}
}
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
@EnableAsync
@EnableScheduling
@SpringBootApplication
public class VirtualthreadApplication {
public static void main(String[] args) {
SpringApplication.run(VirtualthreadApplication.class, args);
}
}
@Scheduled 선언 후 fixed rate를 5초로 설정하여 5초마다 수행이 되도록 설정하였다. 그리고 @Scheduled 가 동작하기 위해서는 @EnableScheduling 을 넣어줘야 한다.
실행 해보면 5초마다 트리거가 발생하여 log 가 찍히는 것을 볼 수 있다. scheduling-1 이라는 이름도 아래 설정을 통해 바꿔 줄 수 있다.
spring:
output:
ansi:
enabled: ALWAYS
threads:
virtual:
enabled: true
task:
scheduling:
thread-name-prefix: mySch-
# task:
# execution:
# thread-name-prefix: myTask-
# scheduling:
# thread-name-prefix: myScheduler-
# main:
# keep-alive: true
만약 config 를 커스텀하고 싶다면 위와 같이 thread-name-prefix 를 설정하면 된다.
'프로그래밍 > Java' 카테고리의 다른 글
Java Virtual Thread (13), 병목 현상(bottleneck) (0) | 2024.06.29 |
---|---|
Java Virtual Thread (12), custom Executor, Scheduler (0) | 2024.06.29 |
Java Virtual Thread (10), @async 어노테이션 (0) | 2024.06.29 |
Java Virtual Thread (8), Virtual Thread와 Platform Thread 성능비교 (0) | 2024.06.23 |
Java Virtual Thread (7), Virtual Thread Dump (0) | 2024.06.23 |