inblog logo
|
moohyun
    프로젝트

    [팀 프로젝트 (제시요)]어노테이션 @Scheduled

    프로젝트 (제시요) 팀 블로그 내용
    화낼거양's avatar
    화낼거양
    Dec 20, 2024
    [팀 프로젝트 (제시요)]어노테이션 @Scheduled
    Contents
    스케줄링된 작업을 비동기적으로 실행하는 방법
     
     
    참고 사이트 : https://dev-coco.tistory.com/176#head4
     
    💡
    스프링부트에서 @Scheduled를 사용하면 일정 시간 간격으로, 또는 특정 시간에 코드가 실행되도록 설정할 수 있습니다.
     
     
     
    스케쥴 어노테이션을 쓰려면 application class에 @EnableScheduling 를 추가
    @EnableScheduling @SpringBootApplicationpublic class SchedulerApplication {      public static void main(String[] args) {         SpringApplication.run(DemoApplication.class, args);     } }
     
    실제 스케쥴링 작업할 클래스 생성
    @Servicepublic class SchedulerService {     @Scheduled(시간타입 = 설정할 시간)     public void run() {         System.out.println("Hello CoCo World!);     } }
     
     

     
     

    fixedRate

    @Servicepublic class SchedulerService {     @Scheduled(fixedRate = 1000) // 1초 간격으로 실행     public void run() {         System.out.println("Hello CoCo World!);     } }
     
    • 작업 시작된 시점부터 일정 간격으로 실행
     
     

    fixedDelay

    @Servicepublic class SchedulerService {     @Scheduled(fixedDelay = 5000) // 작업 종료 후 5초 대기 후 실행     public void run() {         System.out.println("Hello CoCo World!);     } }
     
    • 작업이 끝난 후 일정 시간 간격으로 실행
     
     

    cron

    @Servicepublic class SchedulerService {     @Scheduled(cron = "0 0 * * * *") // 매 시간 정각에 실행     public void run() {         System.out.println("Hello CoCo World!);     } }
     
    • 크론 표현식을 사용해서 작업 실행 시점을 지정
     
     
     
    추가 크론 표현식 :
    • @Scheduled(cron = "0 0 9 * * ?"): 매일 오전 9시에 실행.
    • @Scheduled(cron = "0 0/10 * * * ?"): 10분 간격으로 실행.
    • @Scheduled(cron = "0 0 12 ? * MON-FRI"): 평일 낮 12시에 실행.
     
     
     

    스케줄링된 작업을 비동기적으로 실행하는 방법

     
     
    💡
    기본적으로 @Scheduled 메서드는 동기적으로 실행됩니다.
    여러 작업을 처리하려면 비동기적으로 실행해야 합니다.
     

    기본적으로 @Scheduled 메서드는 동기적으로 실행됩니다.

     
    • @Scheduled 어노테이션을 사용하여 메서드를 스케줄링할 수 있습니다. 이는 정해진 시간 간격으로 작업을 실행합니다.
    • 기본적으로 @Scheduled 메서드는 동기적으로 실행되며, 이는 각 작업이 순차적으로 실행되고, 하나의 작업이 완료되기 전까지 다음 작업이 시작되지 않는다는 의미입니다.
     

    여러 작업을 처리하려면 비동기적으로 실행해야 합니다.

     
    • 여러 작업을 동시에 처리하려면 비동기적으로 실행하는 것이 좋습니다. 이는 작업이 병렬로 실행될 수 있게 합니다.
     
     

    @EnableAsync 활성화

     
    @EnableAsync @EnableScheduling public class ScheduledApplication { }
     
    • @EnableAsync 어노테이션은 Spring에서 비동기 처리를 활성화합니다.
    • @EnableScheduling 어노테이션은 스케줄링을 활성화합니다.
    • 이 두 어노테이션을 사용하여 비동기 스케줄링을 활성화할 수 있습니다.
     

    @Async 추가

     
    @Scheduled(fixedRate = 5000) @Async public void asyncTask() { System.out.println("Async task executed at: " + System.currentTimeMillis()); }
     
    • @Scheduled(fixedRate = 5000) 애노테이션은 이 메서드를 5초마다 실행하도록 스케줄링합니다.
    • @Async 애노테이션은 메서드를 비동기적으로 실행되도록 설정합니다. 이로 인해 여러 작업이 병렬로 실행될 수 있습니다.
     
    Share article
    Contents
    스케줄링된 작업을 비동기적으로 실행하는 방법

    moohyun

    RSS·Powered by Inblog