07.SpringBoot定時任務

基於註解@Scheduled默認爲單線程,開啓多個任務時,任務的執行時機會受上一個任務執行時間的影響。

1、創建定時器

@Component
@Configuration      //1.主要用於標記配置類,兼備Component的效果。
@EnableScheduling   // 2.開啓定時任務
public class SaticScheduleTask {
    //3.添加定時任務
    @Scheduled(cron = "0/5 * * * * ?")
    //或直接指定時間間隔,例如:5秒
    //@Scheduled(fixedRate=5000)
    private void configureTasks() {
        System.err.println("執行靜態定時任務時間: " + LocalDateTime.now());
    }
}

2、創建多線程定時任務

//@Component註解用於對那些比較中立的類進行註釋;
//相對與在持久層、業務層和控制層分別採用 @Repository、@Service 和 @Controller 對分層中的類進行註釋
@Component
@EnableScheduling   // 1.開啓定時任務
@EnableAsync        // 2.開啓多線程
public class MultithreadScheduleTask {

        @Async
        @Scheduled(fixedDelay = 1000)  //間隔1秒
        public void first() throws InterruptedException {
            System.out.println("第一個定時任務開始 : " + LocalDateTime.now().toLocalTime() + "\r\n線程 : " + Thread.currentThread().getName());
            System.out.println();
            Thread.sleep(1000 * 10);
        }

        @Async
        @Scheduled(fixedDelay = 2000)
        public void second() {
            System.out.println("第二個定時任務開始 : " + LocalDateTime.now().toLocalTime() + "\r\n線程 : " + Thread.currentThread().getName());
            System.out.println();
        }
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章