uDock Mac版一款快速而簡單的Dock欄快速啟動工具
阿新 • • 發佈:2021-08-04
在日常開發過程中,定時任務隨處可見。例如,訂火車票如果超過30分鐘未支付,需要將訂單改為取消支付;淘寶訂單超過15天未確認收貨需要自動更改狀態。下面介紹兩種定時任務的實現方式。一是SpringBoot自帶的scheduled,二是Quartz
第一種:scheduled
先搭建一套SpringBoot微服務,在啟動類上新增@EnableScheduling,再配置一個定時任務配置類,方法在啟動後,每三秒會執行一次。
package com.example.demo.task; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled;import org.springframework.stereotype.Component; import java.util.Date; /** * @Author helin * @Date 2021/8/13 14:24 * @Description Springboot schedule */ @Component @Slf4j public class SbScheduleTask1 { @Scheduled(cron = "*/3 * * * * ?") public void task1() throws InterruptedException { log.error("我是Task,我的執行緒ID是 {},時間是 {}", Thread.currentThread().getId(), new Date() ); } }
如果想要兩個定時任務非同步並行執行,需要配置一個執行緒池
@Configuration @Slf4j publicclass ScheduleConfig implements SchedulingConfigurer { @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { taskRegistrar.setScheduler(taskExecutor()); } @Beanpublic Executor taskExecutor(){ return Executors.newScheduledThreadPool(10); } }
第二種:Quartz