Quartz
是OpenSymphony
開源組織在Job scheduling
領域又一個開源項目,Quartz
能夠用來建立簡單或爲運行十個,百個,甚至是好幾萬個Jobs
這樣複雜的程序,儘管Quartz
框架整合了許多額外功能,但就其簡易形式看,你會發現它易用得簡直讓人受不了!java
<!--quartz相關依賴--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency>
QuartzJobBean
,實現定時任務@DisallowConcurrentExecution //禁止任務並行 @Slf4j public class UploadTask extends QuartzJobBean { @Override protected void executeInternal(JobExecutionContext jobExecutionContext){ try { log.info("任務開始"); TimeUnit.SECONDS.sleep(6); } catch (InterruptedException e) { log.info("任務異常"); } finally { log.info("任務結束"); } } }
Quartz
配置@Configuration public class QuartzConfig { //指定了具體須要執行的類,只不過具體的方法就是咱們須要實現的excuteInternal @Bean public JobDetail uploadTaskDetail() { return JobBuilder.newJob(UploadTask.class) .withIdentity("uploadTask").storeDurably() .build(); } //uploadTaskTrigger指定了觸發的規則 @Bean public Trigger uploadTaskTrigger() { CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("*/5 * * * * ?"); return TriggerBuilder.newTrigger().forJob(uploadTaskDetail()) .withIdentity("uploadTask") .withSchedule(scheduleBuilder) .build(); } }
cron
表達式介紹順序 | 秒 | 分鐘 | 小時 | 日期 | 月份 | 星期 | 年(可選) |
---|---|---|---|---|---|---|---|
取值 | 0-59 | 0-59 | 0-23 | 1-30(31) | 1-12 | 1-7 | |
容許特殊字符 | , - * / | , - * / | , - * / | , - * / ? L W C | , - * / | , - * / L # C | 1970-2099 , - * / |
*:表明全部可能的值 -:指定範圍 ,:列出枚舉 例如在分鐘裏,"5,15"表示5分鐘和20分鐘觸發 /:指定增量 例如在分鐘裏,"3/15"表示從3分鐘開始,沒隔15分鐘執行一次 ?:表示沒有具體的值,使用?要注意衝突 L:表示last,例如星期中表示7或SAT,月份中表示最後一天31或30,6L表示這個月倒數第6天,FRIL表示這個月的最後一個星期五 W:只能用在日期中,表示最接近指定天的工做日 #:只能用在星期中,表示這個月的第幾個周幾,例如6#3表示這個月的第3個週五
示例git
0 * * * * ? 每1分鐘觸發一次 0 0 * * * ? 天天每1小時觸發一次 0 0 10 * * ? 天天10點觸發一次 0 * 14 * * ? 在天天下午2點到下午2:59期間的每1分鐘觸發 0 30 9 1 * ? 每個月1號上午9點半 0 15 10 15 * ? 每個月15日上午10:15觸發 */5 * * * * ? 每隔5秒執行一次 0 */1 * * * ? 每隔1分鐘執行一次 0 0 5-15 * * ? 天天5-15點整點觸發 0 0/3 * * * ? 每三分鐘觸發一次 0 0 0 1 * ? 每個月1號凌晨執行一次
Quartz
默認線程池大小爲10github
10個線程串行 讀者能夠註釋掉
@DisallowConcurrentExecution
看看運行結果spring
說點什麼呢,有任何建議,歡迎留言探討,本文源碼。框架
歡迎關注博主公衆號,第一時間推送最新文章ide