当前位置: 首页 > news >正文

【Spring Boot 3】【@Scheduled】多线程执行定时任务

【Spring Boot 3】【@Scheduled】多线程执行定时任务

  • 背景
  • 介绍
  • 开发环境
  • 开发步骤及源码
  • 工程目录结构
  • 总结

背景

软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总是要花费或多或少的时间、检索不止一篇资料才能得出一个可工作的DEMO,这占用了我大量的时间精力。因此本文旨在通过一篇文章即能还原出可工作的、甚至可用于生产的DEMO,期望初学者能尽快地迈过0到1的这一步骤,并在此基础上不断深化对相关知识的理解。
为达以上目的,本文会将开发环境、工程目录结构、开发步骤及源码尽量全面地展现出来,文字描述能简则简,能用代码注释的绝不在正文中再啰嗦一遍,正文仅对必要且关键的信息做重点描述。

介绍

Spring Boot @Scheduled 注解的方法默认是单线程执行,通常情况下需要配置多线程执行,以避免多个定时任务间相互阻塞,本文介绍配置多线程执行定时任务两种方法:

  • 使用 @Scheduled 注解的方法同时使用 @Async 注解;
  • 调用 ScheduledTaskRegistrar 的 `` 方法设置执行定时任务的线程池。

开发环境

分类名称版本
操作系统WindowsWindows 11
JDKOracle JDK21.0.1
IDEIntelliJ IDEA2023.2.4
构建工具Apache Maven3.9.3

开发步骤及源码

1> 创建Maven工程,添加依赖。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.jiyongliang</groupId><artifactId>springboot3-schedule</artifactId><version>0.0.1</version></parent><artifactId>springboot3-schedule-multi-thread</artifactId><properties><java.version>21</java.version><maven.compiler.source>21</maven.compiler.source><maven.compiler.target>21</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEn

相关文章:

  • 【React教程】(2) React之JSX入门与列表渲染、条件渲染详细代码示例
  • 一文彻底搞懂redis数据结构及应用
  • vue3 组合式API获取子组件的属性和方法
  • 【webrtc】m98 : vs2019 直接构建webrtc及moduletest工程 2
  • ARCGIS PRO SDK 数据库属性域设置与获取
  • 华为策略路由+NQA配置
  • iText操作pdf
  • 05 Redis之Benchmark+简单动态字符串SDS+集合的底层实现
  • 改变this指针的三个方法?
  • 如何在 Ubuntu 中安装 Microsoft Edge 浏览器
  • 【Spring连载】使用Spring Data访问Redis(五)----Redis Cache
  • 一篇文带你使用js实现拖拽排序
  • go-zero 统一返回
  • 使用Process.Start()打开文件夹时出现访问被拒绝异常
  • go grpc高级用法
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • github指令
  • HTTP中的ETag在移动客户端的应用
  • Intervention/image 图片处理扩展包的安装和使用
  • JavaScript标准库系列——Math对象和Date对象(二)
  • JavaScript实现分页效果
  • leetcode386. Lexicographical Numbers
  • Python - 闭包Closure
  • Spark RDD学习: aggregate函数
  • Terraform入门 - 1. 安装Terraform
  • vagrant 添加本地 box 安装 laravel homestead
  • XML已死 ?
  • 坑!为什么View.startAnimation不起作用?
  • 使用 Docker 部署 Spring Boot项目
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 我是如何设计 Upload 上传组件的
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • const的用法,特别是用在函数前面与后面的区别
  • scrapy中间件源码分析及常用中间件大全
  • 阿里云移动端播放器高级功能介绍
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • ###C语言程序设计-----C语言学习(3)#
  • #define
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #传输# #传输数据判断#
  • #考研#计算机文化知识1(局域网及网络互联)
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (4)Elastix图像配准:3D图像
  • (编译到47%失败)to be deleted
  • (强烈推荐)移动端音视频从零到上手(上)
  • (三) diretfbrc详解
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转载)Linux 多线程条件变量同步
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .bat批处理(一):@echo off
  • .Net - 类的介绍