springboot之@Scheduled的使用

Spring定时任务 - @Schedule注解详解 一、@Schedule注解一览 @Scheduled注解共有8个属性(其中有3组只是不同类型的相同配置)和一个常量CRON_DISABLED,源码如下: /** * 标记要调度的方法的注释。 必须准确指定 cron、fixedDelay 或 fixedRate 属性之一。带注释的方法必须没有参数。 * 它通常有一个 void 返回类型; 如果不是,则在通过调度程序调用时将忽略返回值。@Scheduled 注解的处理是通过注册 * 一个 ScheduledAnnotationBeanPostPr 阅读详情

springboot下定时任务的使用

使用场景:需要定时的去获取配置表的数据。由于配置表的数据在程序运行时会更新,同时更新频率比较低,为了避免某些方法每一次都直接去获取,消耗性能,所以采用定时的方式主动去获取配置信息,提高高并发的吞吐量。

  1. 在对应的配置类添加注解@EnableScheduling,申明需要启动定时任务
  2. 在对应的方法添加@Scheduled,定义定时任务的方式
@EnableScheduling
@Configuration
public class SystemConfig {
		private static Map<String, Object> resultMap = new HashMap<>();
  	 @Scheduled(fixedDelayString = "${config.scheduled.fixedRate:60000}")
    private void onFixDelay() {
        resultMap = configService.getAllConfig();
    }
}

Scheduled详解

  1. 支持cron表达式,可以通过类似“* * * 1 * ?”来表示每分钟执行,参考 http://www.bejson.com/othertools/cron/
  2. zone解决cron表示的时区问题
  3. fixedDelay,使用int来设置微妙为单位的定时任务
  4. fixedDelayString,使用String来设置n微妙为单位的定时任务,支持${}表达式,获取yaml、properties配置文件对应的属性值,作用在最后一次的调用与下一次调用开始的时间为n微妙(其中由于本身执行时间,可能间隔时间会长一些)
  5. initialDelay ,初次执行需要等待的时间,使用int来设置n微妙为单位
  6. initialDelayString ,初次执行需要等待的时间,使用String来设置n微妙为单位
  7. fixedRate,使用int来设置n微妙为单位的定时任务
  8. fixedRateString,使用String来设置微妙为单位的定时任务,支持${}表达式,获取yaml、properties配置文件对应的属性值,作用在每一次n微妙的时间间隔上
  9. fixedDelay与fixedRate的区别
@Scheduled(fixedRateString = "${config.scheduled.fixedRate:6000}")
private void onFixDelay() throws InterruptedException {
  	// 加点料,模拟某些复杂算法与io读取耗时,时间为4s
  	Thread.sleep(4000);
    System.out.println(new Date());
  	resultMap = configService.getAllConfig();
}

fixedDelay,作用在最后一次的调用与下一次调用开始的时间为n微妙,包括方法本身的执行时间,可能间隔时间会长一些

fixedDelay

fixedRate,作用在每一次n微妙的时间间隔上,不包括方法本身的执行时间

fixedRate

/**
	 * A cron-like expression, extending the usual UN*X definition to include
	 * triggers on the second as well as minute, hour, day of month, month
	 * and day of week.  e.g. {@code "0 * * * * MON-FRI"} means once per minute on
	 * weekdays (at the top of the minute - the 0th second).
	 * @return an expression that can be parsed to a cron schedule
	 * @see org.springframework.scheduling.support.CronSequenceGenerator
	 */
	String cron() default "";

	/**
	 * A time zone for which the cron expression will be resolved. By default, this
	 * attribute is the empty String (i.e. the server's local time zone will be used).
	 * @return a zone id accepted by {@link java.util.TimeZone#getTimeZone(String)},
	 * or an empty String to indicate the server's default time zone
	 * @since 4.0
	 * @see org.springframework.scheduling.support.CronTrigger#CronTrigger(String, java.util.TimeZone)
	 * @see java.util.TimeZone
	 */
	String zone() default "";

	/**
	 * Execute the annotated method with a fixed period in milliseconds between the
	 * end of the last invocation and the start of the next.
	 * @return the delay in milliseconds
	 */
	long fixedDelay() default -1;

	/**
	 * Execute the annotated method with a fixed period in milliseconds between the
	 * end of the last invocation and the start of the next.
	 * @return the delay in milliseconds as a String value, e.g. a placeholder
	 * @since 3.2.2
	 */
	String fixedDelayString() default "";

	/**
	 * Execute the annotated method with a fixed period in milliseconds between
	 * invocations.
	 * @return the period in milliseconds
	 */
	long fixedRate() default -1;

	/**
	 * Execute the annotated method with a fixed period in milliseconds between
	 * invocations.
	 * @return the period in milliseconds as a String value, e.g. a placeholder
	 * @since 3.2.2
	 */
	String fixedRateString() default "";

	/**
	 * Number of milliseconds to delay before the first execution of a
	 * {@link #fixedRate()} or {@link #fixedDelay()} task.
	 * @return the initial delay in milliseconds
	 * @since 3.2
	 */
	long initialDelay() default -1;

	/**
	 * Number of milliseconds to delay before the first execution of a
	 * {@link #fixedRate()} or {@link #fixedDelay()} task.
	 * @return the initial delay in milliseconds as a String value, e.g. a placeholder
	 * @since 3.2.2
	 */
	String initialDelayString() default "";
springboot定时任务 Spring Task(多线程执行demo) 启动类上使用注解@EnableScheduling开启定时任务支持 创建任务类 @Slf4j @Component @Async//异步 public class ScheduledService { @Scheduled(cron = "0/5 * * * * *") public void scheduled(){ lo... 阅读详情

相关推荐

SpringBoot 定时器@Scheduled的使用

在开发中,经常需要执行定时任务,例如定时发送邮件、定时清理缓存等。 Spring框架提供了@Scheduled注解,可以方便地实现定时任务的调度和执行。 本文将详细介绍@Scheduled注解的属性和使用示例。

一碗清深的博客 951

spring task @Scheduled注解各参数详解

@Scheduled注解的使用这里不详细说明,直接对8个参数进行讲解。 参数详解 1. cron 该参数接收一个cron表达式,cron表达式是一个字符串,字符串以5或6个空格隔开,分开共6或7个域,每一个域代表一个含义。 cron表达式语法 [秒] [分] [小时] [日] [月] [周] [年] 注:[年]不是必须的域,可以省略[年],则一共6个域 序号 说明 ...

极客on之路 4863

Mac用户必看:Parallels Desktop 18.1.1最新破解版安装与优化全攻略(附资源)

本文为Mac用户提供Parallels Desktop 18.1.1的详细安装与优化指南,涵盖虚拟化技术选型、专业级配置流程及性能调优技巧。重点解析Parallels Desktop在图形加速、系统资源调度方面的核心优势,并分享生产力增强技巧与典型应用场景实战方案,帮助用户最大化利用这一高效虚拟化工具。

weixin_29240343的博客 823

spring的定时任务@Scheduled简单实用

方式一:使用注解 @Component @EnableScheduling//可以在启动类上注解也可以在当前文件 public class TestJob { @Scheduled(cron = "0/10 * * * * ?") public void runfirst(){ System.out.println("********first job is ...

qq_41899174的博客 5万+

win11怎么安装dosbox和masm来运行汇编程序(小白,萌新篇)

一文教会你如何部署dosbox和masm环境

m0_73279193的博客 4700

基于ESP32-P4的低成本旋转式激光雷达系统设计

激光雷达(LiDAR)作为机器人环境感知的核心传感器,其本质是融合光学测距、机电控制与实时数据处理的嵌入式系统。理解时间飞行(ToF)原理与机械旋转耦合机制,是实现高精度点云采集的基础;而系统级误差源——如计时抖动、电机惯性、信号串扰和温漂——直接决定实际建图鲁棒性。在资源受限场景下,选用RISC-V双核MCU(如ESP32-P4)可兼顾实时控制与网络服务能力,通过硬件时间戳捕获、S型加减速轨迹规划、旋转变压器供电及双Bank OTA等工程手段,有效平衡分辨率、帧率与稳定性。本文围绕360°旋转式激光雷达的

weixin_36231030的博客 433

Springboot @Scheduled注解实现原理

Springboot通过@Scheduled实现定时任务的思路: 利用springboot的BeanPostProcessor接口特性,当一个类实现了BeanPostProcessor之后,spring容器在初始化系统的每个bean的时候都会调用这个类实现的BeanPostProcessor的接口方法,并把bean对像和名称作为参数传给这个类对像。 BeanPost...

mkgoingup的博客 7498

Claude Code Skills 入门:内置技能与自定义技能开发

│ Skill 的特点 │1. 封装性:把复杂操作封装成简单命令2. 可复用:一次定义,随处使用3. 可定制:支持参数传入4. 可发现:通过 /skill-name 方式调用打个比方,如果说 Claude Code 的基础工具是「原材料」,那 Skills 就是「预制菜」——只需要简单加热(调用),就能得到成品(结果)。你可以创建自己的 Skill 来封装常用操作。Skill 支持参数,通过。

gaoxiang_120的专栏 670

SpringBoot——使用@Scheduled定时器

@Scheduled标签的使用;

FlyLikeButterfly的博客 1301

Open3D 计算点云模型的表面积和体积【2025最新版】

python编程实现 计算点云模型的表面积和体积,博客长期更新,本文最近一次更新时间为:2025年4月4日。

点云侠的博客 13万+

2026年软考高级网络规划设计师备考指南

在国家网络安全法律法规和政策的指导下,能够依据网络技术发展的趋势进行计算机网络领域的需求分析、规划设计、部署实施、评测、运行维护等工作。 在需求分析阶段,写出网络系统需求规格说明书;在规划设计阶段,完成逻辑结构设计、物理结构设计,选用适宜的网络设备,按照标准规范编写系统设计文档及项目开发计划;在部署实施阶段,组织项目施工,对项目实施过程进行质量控制、进度控制、成本管理,能具体指导项目实施;在评测运维阶段,能根据相关标准和规范对网络进行评估测试,能制定运行维护、故障分析与处理机制,确保网络提供正常服务;

鹿鸣天涯 1万+

SpringBoot定时任务 @Scheduled详解

java定时调度,java定时任务,Spring Boot定时任务,Spring Boot定时调度,SpringBoot定时调度

nbzhaomao的博客 4万+

SAP FAGLFLEXT 是 SAP 新总账的核心余额表,存储多维度的汇总余额数据。核心结论:该表按 “科目 + 会计年度 + 期间 + 维度” 存储累计余额,字段可分为基础标识

FAGLFLEXT是SAP新总账的核心余额表,采用"科目+年度+期间+维度"结构存储多维汇总数据。其字段分为基础标识(科目、年度等)、维度细分(公司代码、利润中心等15个维度)、金额数值(本外币余额)、辅助控制(状态标识)四大类,支持新总账的灵活核算。该表通过凭证自动更新,与旧总账GLT0相比显著扩展了维度核算能力,各维度需在科目主数据或Ledger配置中启用才能使用。

金牌架构师 454

SpringBoot的@Scheduled和@Schedules有什么区别

SpringBoot的@Scheduled和@Schedules有什么区别

m0_50742275的博客 1769

【2026年华为暑期实习(非AI方向(通软&嵌软&测试&算法&数据科学))-4月8日-第一题- 包裹的编码】(题目+思路+Java&C++&Python解析+在线测试)

摘要:该问题要求将给定的十进制整数N转换为混合进制编码字符串,并处理回文检测。首先根据N的符号位确定编码首位(0或1),然后按输入的进制序列依次对N的绝对值进行取余和整除操作,得到编码数组。将数组元素转换为字母后生成字符串,若字符串为回文则添加"(palindrome)"后缀;否则输出最长回文子串(字典序最小)。算法采用中心扩展法检测回文,时间复杂度为O(L²),空间复杂度为O(L),其中L为字符串长度。

m0_73659489的博客 129

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SpringBoot @Scheduled注解详解

Scheduled 是 Spring Framework 中用于实现定时任务的核心注解,能够方便地配置方法在特定时间或周期执行。

王小工小工历程 1626

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Springboot定时任务@Scheduled详解

Springboot定时任务@Scheduled详解一、使用的注解: @Scheduled 和 @EnableScheduling@EnableScheduling@Scheduled注解标识任务修改@Scheculed默认线程池为多线程二、只使用的注解: @Scheduled 不用 @EnableScheduling引入spring-boot-starter-actuator去掉@EnableS...

陈续缘的专栏 1562

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

springboot使用注解@Scheduled

在springboot使用注解@Scheduled 1、要使用@EnableScheduling开启功能,可以把这个注解放在启动类上 2、执行的类上要加上:@Component(把bean注入到spring的注解都可以,类似 @Controller,@Service 等) 在执行的方法上:@Scheduled 每分钟执行一次:@Scheduled(cron = "0 */1 * * * ?") 需要注意的是,如果在多个函数上使用了@Scheduled,那么一定是一个执行完毕,才能排下一个。可以在Sched

weixin_44596858的博客 902

Spring Boot使用@Scheduled定时器任务

标题 : Spring Boot使用@Scheduled定时器任务 目录 : 技术文档 序号 : 99 Spring Boot使用@Scheduled定时器任务 摘要: Spring Boot之使用@Scheduled定时器任务 假设我们已经搭建好了一个基于Spring Boot项目,首先我们要在Application中设置启用定时任务功能@EnableScheduling。 ​ 启动定时任务 p...

AdamKai 1万+

spring boot 使用@Scheduled注解

最近项目中用到定时任务,所以需要在spring boot项目中集成定时任务。整体来说非常简单,以下详细说明。 一、在Application启动类上添加@EnableScheduling注解启动定时,代码如下。 package com.example.task; import org.springframework.boot.SpringApplication; import...

黄粱大梦的博客 3万+

springboot中@Scheduled 和@Async的使用

如题,今天在知乎突然看到一份关于springboot自带调度器的问题思考,有这么一段内容“在使用@Scheduled注解时,如果不自己重新配置调度器,那么就会使用默认的,从而会导致一些调度执行上的问题”;联系到自己在程序中使用时没有关注到这个问题,因此仔细测试研究一番,最终了解了其中的一些关键思想。 首先,需要了解@Scheduled 和@Async这俩注解的区别: @Scheduled 任务调...

黄亚的博客 4526

SpringBoot定时任务@Scheduled注解详解

SpringBoot定时任务@Scheduled注解详解 项目开发中,经常会遇到定时任务的场景,Spring提供了@Scheduled注解,方便进行定时任务的开发 概述 要使用@Scheduled注解,首先需要在启动类添加@EnableScheduling,启用Spring的计划任务执行功能,这样可以在容器中的任何Spring管理的bean上检测@Scheduled注解,执行计划任务 注解定义 @Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE}

hu_dongyang的博客 5万+

spring boot之@Scheduled原理

spring boot之@Scheduled原理前沿源码分析 前沿 当一个方法被加上@Schedule注解,然后做一些相关配置,在Spring容器启动之后,这个方法就会按照@Schedule注解的配置周期性或者延迟执行。Spring是如何办到这个的,本文就讲解一下这块的原理。 源码分析 扫描Task 熟悉Spring的人都知道BeanPostProcessor这个回调接口,Spring框架扫描所...

雷X峰 2392

@scheduled 执行一次_Spring Boot @Scheduled 定时任务实战

作者:J'KYO来源:www.cnblogs.com/pejsidney/p/9046818.html假设我们已经搭建好了一个基于Spring Boot项目,首先我们要在Application中设置启用定时任务功能@EnableScheduling。启动定时任务其中 @EnableScheduling 注解的作用是发现注解@Scheduled的任务并后台执行。定时任务具体实现类接下来我们来创建一个...

weixin_39950764的博客 2864

Spring boot 如何使用及使用场景@Scheduled

通过合理配置调度规则,结合业务逻辑,可以满足大部分定时任务的需求。启动Spring Boot应用程序:运行Spring Boot应用程序,定时任务将会按照设定的调度规则自动执行。注解在Spring Boot中的使用场景非常广泛,可以满足各种定时任务的需求。注解为Spring Boot中的定时任务提供了简单而强大的功能,使得定时任务的开发和管理变得更加便捷。注解定时执行任务,将批量操作分散在不同的时间段进行,避免一次性处理大量任务造成系统负载过高。注解可以定时触发缓存刷新任务,使缓存中的数据保持有效和一致。

怀着一颗学徒的心 406
上一篇: docker windows10 共享目录挂载失败解决
下一篇: Netty中inboundHandler与outboundHandler的执行顺序
lietobrain
博客等级 码龄11年 227粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值