1.初始化入口(注解 @PostConstruct)
@PostConstruct private void initTimedTask() { //初始化任务调度器cron,可以从数据库中查询到cron值 List<Tweek> tweeks=tweekService.listAll(new Tweek()); String cron=tweeks.get(0).getCron(); if("".equals(cron)){ }else{ //启动 setTaskTimedCron(cron); } } TimedTask taskt; public void setTaskTimedCron(String cron) { if (null == taskt) { taskt= new TimedTask (); } taskt.restart(cron); }2.任务调度类
public class TimedTask implements Runnable{ Logger logger = Logger.getLogger(TimedTask .class); private ThreadPoolTaskScheduler threadPoolTaskScheduler; @Override public void run() { logger.info("每月最后一天定时发送彩信任务启动准备发送!"); //业务逻辑 } /** * 设置cron并启动 * @param cron值 */ public void restart(String cron) { if (null != this.threadPoolTaskScheduler) { ScheduledExecutorService scheduledExecutorService = this.threadPoolTaskScheduler.getScheduledExecutor(); if (!scheduledExecutorService.isShutdown()) { scheduledExecutorService.shutdownNow(); } this.threadPoolTaskScheduler.destroy(); } if (null != cron&& cron.trim().length() > 0) { this.threadPoolTaskScheduler = new ThreadPoolTaskScheduler(); this.threadPoolTaskScheduler.setThreadNamePrefix("timedTask "); this.threadPoolTaskScheduler.initialize(); this.threadPoolTaskScheduler.schedule(this, new CronTrigger(cron)); } } }