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));
}
}
}