串行的定时任务
@Component
public class ScheduledTimer {
private Logger logger = Logger.getLogger(this.getClass());
/**
* 定时任务,1分钟执行1次,更新潜在客户超时客户共享状态
*/
@Scheduled(cron="0 0/1 8-20 * * ?")
public void executeUpdateCuTask() {
Thread current = Thread.currentThread();
logger.info(" 定时任务1:"+current.getId()+ ",name:"+current.getName());
}
@Scheduled(cron="0 0/1 8-20 * * ?")
public void executeGetRepayTask() {
Thread current = Thread.currentThread();
logger.info(" 定时任务2:"+current.getId()+ ",name:"+current.getName());
}
}
并行的定时任务需要添加配置文件
因为spring-boot的目的就是干掉配置文件,我在网上看到的很多都是通过配置文件来实现的,这里通过代码配置实现:
@Configuration
public class ScheduleConfig implements SchedulingConfigurer{
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar){
TaskScheduler taskScheduler = taskScheduler();
taskRegistrar.setTaskScheduler(taskScheduler);
}
@Bean(destroyMethod = "shutdown")
public ThreadPoolTaskScheduler taskScheduler() {
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
scheduler.setPoolSize(20);
scheduler.setThreadNamePrefix("task-");
scheduler.setAwaitTerminationSeconds(60);
scheduler.setWaitForTasksToCompleteOnShutdown(true);
return scheduler;
}
}
网上教程说的需要在启动类上加上@EnableScheduling注解来发现注解@Scheduled的任务并后台执行。
可能我没有通过启动类是通过外部tomcat启动的项目,所以没有加这个注解也能实现定时任务。
路过的大侠如果有知道的,多多指教@EnableScheduling注解的作用,谢谢。