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这个注解,放在一起就可以了。

原文地址:https://www.cnblogs.com/siweihz/p/12127731.html

时间: 2024-10-12 11:48:03

Spring Boot 定时+多线程执行的相关文章

spring boot 定时间任务

l Spring boot  定时任务  (共3种方式定时) l  import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @Enabl

spring boot 定时备份数据库

第一步 :添加mysqldump.exe 进环境变量 第二步  新建一个spring boot 项目,连接数据库 spring.datasource.url=jdbc:mysql://localhost:3308/springbootdb?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true spring.datasource.username=root spring.datasource.password=mysql

Spring Boot Async异步执行

异步调用就是不用等待结果的返回就执行后面的逻辑,同步调用则需要等带结果再执行后面的逻辑. 通常我们使用异步操作都会去创建一个线程执行一段逻辑,然后把这个线程丢到线程池中去执行,代码如下: ExecutorService executorService = Executors.newFixedThreadPool(10); executorService.execute(() -> { try { // 业务逻辑 } catch (Exception e) { e.printStackTrace(

Spring boot exe4j可执行exe与jre1.8捆绑

下载地址: http://www.jrsoftware.org/isdl.php#stable 原文地址:https://www.cnblogs.com/eason-d/p/11972362.html

Spring Schedule定时任务多线程执行任务配置

@Configuration public class ScheduleConfig implements SchedulingConfigurer { @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { Method[] methods = BatchProperties.Job.class.getMethods(); int defaultPoolSize = 10; int corePoo

《01.Spring Boot连载:Spring Boot入门介绍》

1 Spring Boot的概述 Spring Boot是开发者和Spring 本身框架的中间层,帮助开发者统筹管理应用的配置,提供基于实际开发中常见配置的默认处理(即习惯优于配置),简化应用的开发,简化应用的运维:总的来说,其目的Spring Boot就是为了对Java web 的开发进行"简化"和加"快"速度,简化开发过程中引入或启动相关Spring 功能的配置.这样带来的好处就是降低开发人员对于框架的关注点,可以把更多的精力放在自己的业务代码上. 同时随着微服

新手必看,Spring Boot CLI 必会必知

Spring Boot CLI 是什么 Spring Boot CLI 是 Spring Boot Commad Line 的缩写,是 Spring Boot 命令行工具.在 Spring Boot CLI 可以跑 Groovy 脚本,通过简单的 Java 语法就可以快速而又简单的学习 Spring Boot 原型. Spring Boot CLI 安装 打开 Spring Boot CLI 下载页面,地址:https://repo.spring.io/milestone/org/springf

Spring Boot 的 10 个核心模块

学习 Spring Boot 必须得了解它的核心模块,和 Spring 框架一样,Spring Boot 也是一个庞大的项目,也是由许多核心子模块组成的. Spring Boot 的核心模块下面我们大概来了解一下 Spring Boot 的核心模块. 1.spring-boot 这是 Spring Boot 的主模块,也是支持其他模块的核心模块,主要包含以下几点: 1) 提供了一个启动 Spring 应用的主类,并提供了一个相当方便的静态方法,它的主要是作用是负责创建和刷新 Spring 容器的

Spring Boot Debug调试,日后必定有用!

最近发现 Spring Boot 本地不能 Debug 调试了,原来 Spring Boot 升级后,对应插件的命令参数都变了,故本文做一个升级. 背景: Spring Boot 项目在使用 Spring Boot Maven 插件执行启动命令 spring-boot:run 的时候,如果设置的断点进不去,要进行以下的设置. 官方解决方案: By default, the run goal runs your application in a forked process. If you nee