spring中@scheduled定时任务的使用

Spring中使用定时任务的两种方式[@Scheduled,quartz+SpringBeanJobFactory] 文章目录Spring自带的@Scheduled注解1. 在主启动类上面加@EnableScheduling,开启定时任务2. 定时任务类3. 开启异步执行定时任务,在主启动类上面加@EnableScheduling4. 设置异步执行定时任务的线程池大小Spring中使用quartz Spring自带的@Scheduled注解 简单的定时任务控制,注解使用spring自带定时任务就可以完成啦,定时任... 阅读详情
Spring配置文件xmlns加入
xmlns:task="http://www.springframework.org/schema/task"

xsi:schemaLocation中加入

     http://www.springframework.org/schema/task
     http://www.springframework.org/schema/task/spring-task-3.0.xsd"

Spring扫描注解的配置

<context:component-scan base-package="com.imwoniu.*" />

任务扫描注解

<task:executor id="executor" pool-size="5" />  
<task:scheduler id="scheduler" pool-size="10" />  
<task:annotation-driven executor="executor" scheduler="scheduler" />

代码实现:

注解@Scheduled 可以作为一个触发源添加到一个方法中,例如,以下的方法将以一个固定延迟时间5秒钟调用一次执行,这个周期是以上一个调用任务的完成时间为基准,在上一个任务完成之后,5s后再次执行:

@Scheduled(fixedDelay = 5000)
public void doSomething() { 
    // something that should execute periodically
}

如果需要以固定速率执行,只要将注解中指定的属性名称改成fixedRate即可,以下方法将以一个固定速率5s来调用一次执行,这个周期是以上一个任务开始时间为基准,从上一任务开始执行后5s再次调用:

@Scheduled(fixedRate = 5000)
public void doSomething() { 
    // something that should execute periodically
}

 

如果简单的定期调度不能满足,那么cron表达式提供了可能

package com.imwoniu.task;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class TaskDemo {

    @Scheduled(cron = "0 0 2 * * ?")  //每天凌晨两点执行
        void doSomethingWith(){
            logger.info("定时任务开始......");
            long begin = System.currentTimeMillis();

            //执行数据库操作了哦...

            long end = System.currentTimeMillis();
            logger.info("定时任务结束,共耗时:[" + (end-begin) / 1000 + "]秒");
    }
}

以下内容摘自http://biaoming.iteye.com/blog/39532

一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。

按顺序依次为
秒(0~59)

分钟(0~59)

小时(0~23)

天(月)(0~31,但是你需要考虑你月的天数)

月(0~11)

天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)

7.年份(1970-2099)

其中每个元素可以是一个值(如6),一个连续区间(9-12),一个间隔时间(8-18/4)(/表示每隔4小时),一个列表(1,3,5),通配符。由于”月份中的日期”和”星期中的日期”这两个元素互斥的,必须要对其中一个设置?.

0 0 10,14,16 * * ? 每天上午10点,下午2点,4点
0 0/30 9-17 * * ?   朝九晚五工作时间内每半小时
0 0 12 ? * WED 表示每个星期三中午12点 
“0 0 12 * * ?” 每天中午12点触发 
“0 15 10 ? * *” 每天上午10:15触发 
“0 15 10 * * ?” 每天上午10:15触发 
“0 15 10 * * ? *” 每天上午10:15触发 
“0 15 10 * * ? 2005” 2005年的每天上午10:15触发 
“0 * 14 * * ?” 在每天下午2点到下午2:59期间的每1分钟触发 
“0 0/5 14 * * ?” 在每天下午2点到下午2:55期间的每5分钟触发 
“0 0/5 14,18 * * ?” 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 
“0 0-5 14 * * ?” 在每天下午2点到下午2:05期间的每1分钟触发 
“0 10,44 14 ? 3 WED” 每年三月的星期三的下午2:10和2:44触发 
“0 15 10 ? * MON-FRI” 周一至周五的上午10:15触发 
“0 15 10 15 * ?” 每月15日上午10:15触发 
“0 15 10 L * ?” 每月最后一日的上午10:15触发 
“0 15 10 ? * 6L” 每月的最后一个星期五上午10:15触发 
“0 15 10 ? * 6L 2002-2005” 2002年至2005年的每月的最后一个星期五上午10:15触发 
“0 15 10 ? * 6#3” 每月的第三个星期五上午10:15触发 

有些子表达式能包含一些范围或列表

例如:子表达式(天(星期))可以为 “MON-FRI”,“MON,WED,FRI”,“MON-WED,SAT”

“*”字符代表所有可能的值

因此,“*”在子表达式(月)里表示每个月的含义,“*”在子表达式(天(星期))表示星期的每一天

 

“/”字符用来指定数值的增量

例如:在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟

         在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“3,23,43”)的含义一样


“?”字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值

当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”

 

“L” 字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写

但是它在两个子表达式里的含义是不同的。

在天(月)子表达式中,“L”表示一个月的最后一天

在天(星期)自表达式中,“L”表示一个星期的最后一天,也就是SAT

如果在“L”前有具体的内容,它就具有其他的含义了

例如:“6L”表示这个月的倒数第6天,“FRIL”表示这个月的最一个星期五

注意:在使用“L”参数时,不要指定列表或范围,因为这会导致问题

 

 

字段   允许值   允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可选) 留空, 1970-2099 , - * /


转自 http://blog.youkuaiyun.com/prisonbreak_/article/details/49180307

【Spring Boot实战与进阶】定时任务注解@Scheduled的使用 小编精心为大家准备了一手资料以上Java高级架构资料、源码、笔记、视频。Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术【附】架构书籍BAT面试的20道高频数据库问题解析Java面试宝典Netty实战算法BATJ面试要点及Java架构师进阶资料《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取![外链图片转存中…(img-b73JnfUJ-1713536795213)] 阅读详情

相关推荐

Spring Boot 定时任务 @Scheduled 不执行?可能是这些原因

Spring Boot中@Scheduled定时任务不执行的常见原因及解决方法:1)未添加@EnableScheduling启用定时任务;2)任务类未被Spring管理(缺少@Component等注解);3)定时方法非public修饰;4)默认单线程池导致任务阻塞(需配置多线程池);5)Cron表达式错误或系统时区问题;6)应用关闭时任务中断(需配置优雅关闭)。通过检查配置、线程池、方法可见性等关键点,可快速定位问题并确保定时任务稳定运行。

专栏 2225

springboot中@Scheduled里定时任务限定

展开全部 每天凌晨2点 0 0 2 * * ?和每天隔一小时 0 * */1 * * ? 例1:每隔e69da5e887aa32313133353236313431303231363533313333656436625秒执行一次:*/5 * * * * ? 例2:每隔5分执行一次:0 */5 * * * ? 在26分、29分、33分执行一次:0 26,29,33 * * * ? 例3:每天半夜12点30分执行一次:0 30 0 * * ? (注意日期域为0不是24) 每天凌晨1点执行一次:0 .

song_quan_的博客 2449

【Spring Boot 3】【@Scheduled】动态删除定时任务

【Spring Boot 3】【@Scheduled】动态新增定时任务说明了开发Spring Boot应用时如何动态新增定时任务,本文将在其基础上继续介绍如何动态删除定时任务。1> 本文展示的添加定时任务的实现方法与【Spring Boot 3】【@Scheduled】动态新增定时任务不同,没有使用,而是自定义了一个类型的实例,通过调用此实例的schedule*方法添加定时任务,也未使用到注解;2> 本文使用了缓存所有的定时任务对象,后续所有对定时任务的控制本质上都是调用这些定时任务对象的方法;

又言又语 1617

@Scheduled(cron="") spring定时任务时间设置

一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。 按顺序依次为 秒(0~59) 分钟(0~59) 小时(0~23) 天(月)(0~31,但是你需要考虑你月的天数) 月(0~11) 天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT) 7.年份(1970-2099) 其中每个元素可以是一个值(如6),一个连续区间(9-12),一...

u013323758的博客 8369

【Spring】Spring的定时任务注解@Scheduled原来如此简单

1 简介 定时任务的实现非常多,JDK的Timer、Spring提供的轻量级的Scheduled Task、QuartZ和Linux Cron等,还有一些分布式的任务调度框架。本文主要介绍Scheduled Task的使用。 2 方便的4种方式 注解@Scheduled只能用于满足下面两个条件的方法上: (1)没有返回类型,或者说返回类型为void; (2)没有参数; 开启Spring的Sche...

南瓜慢说 1350

【Spring Boot 3】【@Scheduled】动态修改定时任务时间

Spring Boot 3】【@Scheduled】静态定时任务说明了开发Spring Boot应用时如何配置静态定时任务,本文介绍如何动态调整定时任务时间。1> 如果要实现动态修改定时任务触发时间,则需要自定义接口的实现类,在实现方法时调用Spring提供的Bean的相关方法配置定时任务;2> 通过配置定时任务的方法除了外,还有等,在使用上稍有不同,本文中并未做出相关介绍;

又言又语 2666

Springboot:编写定时任务的2种方式

2种实现定时任务的方式

行云 670

Spring之定时任务 @Scheduled注解入门

背景 最近帮人做点东西,主要完成功能如下: 两张表,一张信息明细表,一张发送任务表。需要做两个定时任务,一个循环去读取信息明细表,将没有读取过的信息读取到任务表中;一个循环去读取任务表,将没有发送过的消息发送出去。 功能简单来说,就是这样子。一开始用的是让任务类继承TimerTask,实现run方法,然后再去调用任务类。 如下: public class MyTask extends Time...

彭先森的博客 1907

@Scheduled注解简介

@Scheduled注解使用简介

棒棒糖的糖不含糖的博客 3万+

Spring定时任务@scheduled之使用多线程

前言 经过反馈发现每次到周六签到任务时间就会异常,所以导致出问题。先看了看代码是莫得问忒的,于是问题肯定是出在定时任务@scheduled身上,周六自动任务每次延迟执行那就找找周六的问题。 查看了一下周六的话签到量会增大一倍以上,于是猜测是线程阻塞的问题。然后又发现从14号开始的每个周六延迟到了10点半,仔细回想了一下查看了下代码提交记录,在12号我新开了两个周六早上的定时同步任务。spr...

马句 4544

MR2数据集实战:5步搞定多模态谣言检测模型训练(附完整代码)

本文详细介绍了如何使用MR2多模态数据集构建高精度谣言检测系统,涵盖环境配置、数据准备、多模态特征工程、模型架构设计、训练调优及部署优化等5个关键步骤。通过双线性融合技术处理文本、图像和网页三模态数据,解决特征对齐和模态冲突等工程难题,并提供完整代码实现和性能优化方案。

weixin_42657024的博客 239

@Scheduled()注解以及cron表达式详解

@Schedule()注解以及cron表达式详解 @Schedule注解:任务自动化调度。 1. @Scheduled(fixedDelay = 5000) 延迟执行。任务在上个任务完成后达到设置的延时时间就执行。 此处,任务会在上个任务完成后经过5s再执行。 2. @Scheduled(fixedRate = 5000) 定时执行。任务间隔规定时间即执行。 此处,任务每隔五秒便会执行一次。 3. @Scheduled(cron = “0 0 2 * * ?”) 自定义规则执行。比较复杂,一般用6或7个标识

qq_37807821的博客 7万+

红外图像和可见光图像异源图像配准问题研究

本文旨在研究一种具有高准确率和鲁棒性的融合图像障碍物检测技术,通过把红外和可见光图像进行图像配准和融合,获取高质量的异源融合图像,根据融合图像的特点采用有效的障碍物检测算法,将图像中的障碍物准确检出。......

G_redsky的博客 1万+

Spring Boot 定时任务 @Scheduled

项目开发中经常需要执行一些定时任务,比如在每天凌晨,需要从 implala 数据库拉取产品功能活跃数据,分析处理后存入到 MySQL 数据库中。类似这样的需求还有许多,那么怎么去实现定时任务呢,有以下几种实现方式。 Java 定时任务的几种实现方式 基于 java.util.Timer 定时器,实现类似闹钟的定时任务 使用 Quartz、elastic-job、xxl-job 等开源第三方定时任...

武培轩 2015

使用.NET 免费开源包ViewFaceCore做一个人脸识别并注册的功能,没有比我更全的

本文介绍了一个基于WinForm的免费人脸识别系统实现方案。系统使用AForge和ViewFaceCore库,支持从USB或电脑自带摄像头采集图像,具备人脸注册和快速识别功能。硬件方面仅需普通摄像头,软件依赖多个NuGet包(如AForge.Video、ViewFaceCore等)。界面包含视频显示、图像预览和功能按钮控件,后台采用SQLServer存储用户面部特征数据。核心代码展示了人脸检测、特征提取和多线程处理逻辑,通过ViewFaceCore实现高效识别。系统具有识别速度快、准确率高的特点,适合Win

一个靠“吃代码”长大的程序猿,专治各种“Bug 饥饿症”。 817

Android SystemUI——初始化流程(三)

1、Android 系统在启动之后,首先会Zygote进程,Zygote进程又会进一步启动 SystemServer进程,它会启动各种系统所需要的服务,在监听AMS启动完毕之后,还会启动SystemUIService。2、在启动SystemUIService服务之前,系统首先会创建SystemUI对应的进程,获取SystemUIAppComponentFactory实例对象,调用instantiateApplicationCompat创建SystemUIApplication实例对象并设置回调方法。

小旭的专栏 1157

Spring 定时任务@Scheduled

1. 在SpringBoot 启动类添加 @EnableScheduling2. 在启动类的定时任务方法添加注解 @Scheduled每隔10秒在控制台打印当前时间从左到右的顺序值是:否corn可以用${ } 获取配置文件的值。而不用在@ Scheduled 中设置具体的。如@Scheduled(corn = "${sc.value}")】多个值。如在“周”上设置 “1,2,3“ 表示每周一周二周三都会执行。【-】区间值。如在”周“上设置”1-3“表示每周一至周三都会执行。【*】所有值。

菜鸟的博客 1177

用playwright封装一个处理web网页的爬虫,并隐藏自动化特征,自动处理反爬

本文介绍了一个使用Playwright封装的Python爬虫函数,具备反爬对抗能力。该脚本通过移除自动化标志、注入真实用户代理、禁用Chrome自动化属性等措施,有效绕过电商、新闻等中等反爬网站的检测。核心功能包括:隐藏navigator.webdriver标志、模拟人类浏览行为、设置合理的设备参数,并支持代理和延迟加载。使用时需注意避免高频访问并定期更新User-Agent。该方案适用于需要JavaScript渲染的动态网页,性能优于非无头模式。

数据知道的博客 3393

spring boot 使用 @Scheduled 执行定时任务

spring boot 使用 @Scheduled 执行定时任务第一步 配置启动类第二步 添加定时任务注解 第一步 配置启动类 在spring boot的启动类上加@EnableScheduling注解,允许支持@Scheduled: @EnableScheduling // 允许支持@Scheduled,开启定时任务功能 public class YwbpDumpRestApplication extends SpringBootServletInitializer { public

weixin_44873050的博客 486

使用 Python 爬取 YouTube 视频评论(弹幕)

✅ 如何使用 Python 调用 YouTube Data API v3。✅ 如何爬取指定视频的所有评论信息。✅ 如何对评论数据进行初步分析与可视化。✅ 如何扩展功能,实现评论回复获取和多视频批量爬取。

2201_76125261的博客 643

AI幻觉缓解的成本效益分析:投入产出比优化

在当今AI技术飞速发展的时代,AI幻觉成为了一个不容忽视的问题。AI幻觉就像是AI在“做梦”,会给出一些不符合实际或者错误的答案。我们这篇文章的目的就是要分析缓解AI幻觉所需要投入的成本和能够获得的效益,看看怎么能让投入和产出的比例达到最优。范围涵盖了常见的AI应用场景,比如智能客服、自动驾驶等领域。接下来,我们会先介绍一些和AI幻觉、成本效益分析相关的术语。然后用一个有趣的故事引出核心概念,解释什么是AI幻觉、成本效益分析等,以及它们之间的关系。

AI 原生应用开发的博客 935

Spring定时任务@Scheduled的使用

@Scheduled是spring自带的注解,默认是单线程,常用作定时任务使用, 简单的使用 1、在启动类上添加注解 @EnableScheduling 2、在一个Bean中(@Component,需要将写定时任务的类交给spring管理)编写一个public void无参数方法,然后加上注解 @Scheduled

佬涛的博客 6590

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

spring 定时任务@Scheduled原理解析

https://zhuanlan.zhihu.com/p/92768652 官网API定义: An annotation that marks a method to be scheduled. Exactly one of thecron(),fixedDelay(), orfixedRate()attributes must be specified. The annotated method must expect no arguments. It will typically have a

yygr的博客 3564

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

spring的@Scheduled定时任务介绍

介绍 在项目中我们很多时候需要跑定时任务。而常用的定时任务就有@Scheduled()。我也一直在用,但很多时候都记不住, 没次需要用的时候再去查找。一直没哟时间来总结一下。所以现在总结一下希望自己能更好的记住。 使用 在项目主类中加入@EnableScheduling注解,启用定时任务的配置 首先,看一下 @Scheduled的注解,然后一个一个解释。 public @interface Sch...

毅香雪海的博客 4080

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

spring使用@Scheduled配置定时任务

但是同样的任务不会并行执行,如果超过设定的频率,前一个任务还未完成则会等待前一个任务完成,再开始下一个任务。比如:fixedRate设置的任务周期是5秒,如果一次任务的时间耗时是3秒,则下一任务会等到5秒间隔开始,但是如果惹我你执行耗时是6秒,则本次任务结束后会立即执行下一次任务,下一任务已经排队等候1秒了。然后更新trigger信息,再次调用schedule()方法生成下一周期任务到executor执行,到时间又会调用run方法这样循环往复完成cron周期性执行。cron表达式指定任务频率。

sinat_16493273的博客 2941
上一篇: 学习ThreadLocal
下一篇: zookeeper在windows下安装集群
Tracyclock
博客等级 码龄10年 14粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值