這篇文章主要介紹了springBoot @Scheduled實作多個任務同時開始執行,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
@Scheduled 多個定時任務同時執行
1、定時任務是單線程運作的
定時任務是單線程執行的,預設一個時間段隻能執行一個定時任務
如果多個定時任務同時執行的話,那麼會按照順序執行
2、多線程開啟定時任務
@Service
@Component
@EnableScheduling
public class SendMsgNoticeServiceTimer {
private static final Logger logger = LoggerFactory.getLogger(SendMsgNoticeServiceTimer.class);
@Autowired
private NySendMsg nySendMsg;
//建立定時任務線程池
@Bean
public TaskScheduler taskScheduler() {
ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
taskScheduler.setPoolSize(64);
return taskScheduler;
}
@Scheduled(cron="0 0 10 * * ?")
public void sendPaymentNotice() {
logger.info("***-sendPaymentNotice--定時任務每天淩晨10點執行一次---***");
SimpleDateFormat sf = new SimpleDateFormat("yyyyMMdd");
String endDate = sf.format(new Date());
JSONObject obj = sendTradingFeeChoosed(String.valueOf(1));
logger.info("***---定時任務" + endDate + ":系統自動發送" + obj.size() + "條短信提醒---***");
}
@Scheduled(cron="0 0 10 * * ?")
public void sendLateRemind() {
logger.info("***--sendLateRemind---定時任務每天淩晨10點執行一次---***");
SimpleDateFormat sf = new SimpleDateFormat("yyyyMMdd");
String endDate = sf.format(new Date());
JSONObject obj = sendTradingFeeChoosed(String.valueOf(2));
logger.info("***---定時任務" + endDate + ":系統自動發送" + obj.size() + "條短信提醒---***");
}
}