zoukankan      html  css  js  c++  java
  • Spring Boot 定时+多线程执行

    Spring Boot 定时任务有多种实现方式,我在一个微型项目中通过注解方式执行定时任务。

    具体执行的任务,通过多线程方式执行,单线程执行需要1小时的任务,多线程下5分钟就完成了。

    执行效率提升10倍以上,执行效率提升10倍以上,执行效率提升10倍以上。

    重要的事情说三遍!

    本文不深入介绍具体的原理,大家如果要实现类似的功能,只需要执行下面1~5即可。

    至于为什么是上图,而不直接贴代码。直接上代码排版不齐,需要的可以留邮箱,我发给你。

    (1)定时任务实现

       在需要定时执行的的方法上面增加注解 @Scheduled(cron="01 00 17 * * ?")   //[秒] [分] [小时] [日] [月] [周] [年]。

        其中cron类似于Linux定时执行的写法,上述表示该任务每天17:00执行一次。

    (2)定时任务方法内部多线程执行的部分

        需要多线程执行的部分,要重新定义一个类,然后注入该类的变量。如我这里定义了一个类DoBackupTask,在这个类中通过多线程方式执行任务。

     (3)多线程实现部分

    多线程执行方法上,增加注解@Async("taskExecutor"),参数为线程池的名称

     (4)线程池实现

    线程池我定义了一个类,在该类中定义了一个方法asyncExecutor。该方法生成ThreadPoolTaskExecutor的一个对象,设置线程数量,线程池的名称等参数。

     (5)当上述步骤都做好了,然而并没有效果。可能你漏了最关键的一步:在应用启动类上,增加注解

    @EnableScheduling 启用多线程
    @EnableAsync 异步执行

    如果还是不清楚具体位置,就找@SpringBootApplication这个注解,放在一起就可以了。

    所有文章,坚持原创。如有转载,敬请标注出处。
  • 相关阅读:
    面试准备
    spring常用注解
    lambda函数式编程
    java异常——Exception、RuntimException
    java异常——五个关键字(try、catch、finally、throw、throws)
    java中四种修饰符(private、default、protected、public)的访问权限
    海康威视c++实习生面试资料
    面经-字节跳动-web后端开发实习生(一面凉经)
    知识点汇总-软件工程导论
    知识点汇总-数据库原理
  • 原文地址:https://www.cnblogs.com/siweihz/p/12127731.html
Copyright © 2011-2022 走看看