串行的定時任務
@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注解的作用,謝謝。