當前位置:
首頁 > 知識 > SpringBoot如何整合定時任務調度

SpringBoot如何整合定時任務調度

所有的系統開發裡面定時調度絕對是一個核心的話題,對於定時調用的實現在實際開發之中可以使用:TimerTask,Quartz,SpringTask配置,實際上這裡面最簡單的配置就是Spring自己所提供的Task處理。

如果要想實現定時調度,只需要配置一個定時調度的組件類即可:

import java.time.Instant;

@Component

public class MyScheduler {

@Scheduled(fixedRate = 2000) //採用間隔調用

public void runJobA() {

}

@Scheduled(cron = "* * * * * ?")

public void runJobB() {

}

}

如果現在要想執行此任務,那麼還需要有一個基本的前提:你的程序啟動類上一定要啟用調度處理。

package com.gwolf;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication //啟動SpringBoot程序,而後自帶子包掃描。

@EnableTransactionManagement

@EnableScheduling

public class StartSpringBootMain {

public static void main(String[] args) {

SpringApplication.run(StartSpringBootMain.class, args);

}

}

啟動程序運行主類,查看程序的執行結果:

這個時候所實現的任務調用只是串列任務調度,也就是說所有的任務時候一個一個的執行的處理方式,那麼如果現在有一個任務所花費的時間特別的暢,則其他的任務都會擠壓,實際開發之中很明顯這種處理是不可能存在。

如果要想啟動並行的調度處理,則一定要準備出一個線程調度池,進行一個線程調度的配置類:

@Configuration

public class SchedulerConfig implements SchedulingConfigurer{

//開啟一個線程調度池

@Override

public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {

taskRegistrar.setScheduler(Executors.newScheduledThreadPool(100));

}

}

在以後所編寫的定時任務調用的時候一定要準備好一個線程池,這樣才可以讓多個任務並行執行。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Adolph談JAVA高端 的精彩文章:

SpringBoot配置基礎攔截器
在springboot中配置aop攔截器

TAG:Adolph談JAVA高端 |