• 定时任务schedule(spring boot )


    1. 定时任务
    实现方式:
    SpringBoot自带的Scheduled,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多,本文主要介绍。

    执行方式:
    单线程(串行)------------多个定时任务,一个跑完,其他的才能跑
    多线程(并行)

    2. 创建定时任务

    @Component
    @EnableScheduling
    public class ScheduledTest
    {
    @Scheduled(cron="0/5 * * * * ?") 
    public void executeFileDownLoadTask() {

    // 间隔2分钟,执行任务 
    Thread current = Thread.currentThread(); 
    System.out.println("定时任务1:"+current.getId());
    }
    }

    备注:
    @EnableScheduling :用于发现注解@Scheduled的任务并后台执行;
    @Scheduled(cron="0 0/2 * * * ?") :用于标注这个方法是一个定时任务的方法,有多种配置可选。cron支持cron表达式,指定任务在特定时间执行;fixedRate以特定频率执行任务;fixedRateString以string的形式配置执行频率。

    3. 并行任务和异步任务的配置
    @Configuration
    @EnableScheduling
    public class ScheduleConfig implements SchedulingConfigurer, AsyncConfigurer
    {

    /*
    * 并行任务
    */
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar)
    {
    TaskScheduler taskScheduler = taskScheduler();
    taskRegistrar.setTaskScheduler(taskScheduler);
    }

    /**
    * 并行任务使用策略:多线程处理

    * @return ThreadPoolTaskScheduler 线程池
    */
    @Bean(destroyMethod = "shutdown")
    public ThreadPoolTaskScheduler taskScheduler()
    {
    ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
    scheduler.setPoolSize(20);
    scheduler.setThreadNamePrefix("task-");
    scheduler.setAwaitTerminationSeconds(60);
    scheduler.setWaitForTasksToCompleteOnShutdown(true);
    return scheduler;
    }

    /*
    * 异步任务
    */
    public Executor getAsyncExecutor()
    {
    Executor executor = taskScheduler();
    return executor;
    }

    /*
    * 异步任务 异常处理
    */
    public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler()
    {
    return new SimpleAsyncUncaughtExceptionHandler();
    }
    }

    备注:
    SchedulingConfigurer: 将线程池注入TaskScheduler,并与ScheduledTaskRegistrar 关联;
    AsyncConfigurer:用于异步处理

    4. 启动
    @SpringBootApplication
    public class Application 
    {

    public static void main(String[] args)
    {
    SpringApplication.run(Application.class, args);

    }

    }

    本文转自 :  https://www.cnblogs.com/cityspace/p/6638578.html

    https://blog.csdn.net/xzyxcy/article/details/79746689

    https://blog.csdn.net/qiaorui_/article/details/82999655

  • 相关阅读:
    c#遍历文件夹获得所有文件
    var的一些理解
    Pycharm使用秘籍
    RESTful规范
    Django文档阅读-Day4
    Django文档阅读-Day3
    Django文档阅读-Day2
    Django文档阅读-Day1
    你的博客园奇丑无比怎么办?
    基于scrapy框架输入关键字爬取有关贴吧帖子
  • 原文地址:https://www.cnblogs.com/zgzf/p/10580298.html
Copyright © 2020-2023  润新知