• spring-boot通过@Scheduled配置定时任务


    串行的定时任务

    @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注解的作用,谢谢。


  • 相关阅读:
    IEnumerator & IEnumerable
    GameObject.Active
    Unity3D的四种坐标系
    gvim
    Platform Dependent Compilation
    delegate
    new 约束
    UIPanel
    UIButton
    UISprite
  • 原文地址:https://www.cnblogs.com/yizw/p/7850310.html
Copyright © 2020-2023  润新知