- 使用情景:每天下午两点给用户发送一条短信
- 代码
@Service
@Slf4j
public class BrokerAuthTaskServiceImpl implements BrokerAuthTaskService {
@Autowired
SmsRecordMapper smsRecordMapper;
@Autowired
private ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
private ScheduledFuture<?> future1;
public static String time = "0 0 14 * * *"; //每天下午14:00
@Bean
public ThreadPoolTaskScheduler threadPoolTaskScheduler() {
return new ThreadPoolTaskScheduler();
}
@Override
public ApiResultDto startTask() {
if (future1 != null){
return new ApiResultDto(200,"该定时任务已经开始");
}
future1 = threadPoolTaskScheduler.schedule(new SendMobileTaskFirst(smsRecordMapper), new Trigger() {
@Override
public Date nextExecutionTime(TriggerContext triggerContext) {
return new CronTrigger(time).nextExecutionTime(triggerContext);
}
});
log.info("开启定时任务------------------------------------");
return new ApiResultDto();
}
@Override
public ApiResultDto stopTask() {
if (future1 != null) {
future1.cancel(true);
log.info("关闭短信提醒任务---------");
future1 = null;
if(future1 == null) log.info("确实关掉了");
}else{
log.info("该任务未开启");
}
return new ApiResultDto();
}
}
@Slf4j
public class SendMobileTaskFirst implements Runnable {
private BrokerAuthTaskService brokerAuthTaskService;
public SendMobileTaskFirst() {}
public SendMobileTaskFirst(SmsRecordMapper smsRecordMapper) {
this.smsRecordMapper = smsRecordMapper;
}
@Override
public void run() {
log.info("running-----------------------------------------")
}
}