@Scheduled 多个定时任务同时执行
1、定时任务是单线程运行的
定时任务是单线程执行的,默认一个时间段只能执行一个定时任务
如果多个定时任务同时执行的话,那么会按照顺序执行
2、多线程开启定时任务
创建线程池,且注入到spring 中,
@EnableScheduling 定时任务扫描,开始定时任务计划支持
@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() + "条短信提醒---***"); } }