一、定时任务触发条件

1、在 Application 启动类上添加:@EnableScheduling

2、含定时方法的类上添加注解:@Component,该注解将定时任务类纳入 spring bean 管理。

3、在定时方法上写上:@Scheduled(cron = "0 0/1 * * * ?"),该 cron 表达式为每一分钟执行一次方法。

二、@Scheduled用法

1、fixedDelay

@Scheduled(fixedDelay = 5000)
public void testFixedDelay(){
try {
log.info("当前时间:" + DateUtil.now());
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}

每个任务延迟3秒,然后打印当前时间。

fixedDelay规律总结:

前一个任务执行结束后,再等待5秒,然后执行第二个任务。

2、fixedRate

@Scheduled(fixedRate = 5000)
public void testFixedRate(){
try {
log.info("当前时间:" + DateUtil.now());
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}

任务启动后,每隔5秒执行一次任务。

如果将延时时间修改为8秒,则输出变为8秒,如下图所示:

fixedRate规律总结:

假如设置定时任务每5秒一执行,如果前一个任务用时超过了5秒,则等前一个任务完成后就立刻执行第二次任务。如果前一个任务用时小于5秒,则等满足5秒以后,再执行第二次任务。

3、Corn表达式详解(常用)

Corn 表达式可用 秒、分、时、天、周、月、年 来表示:

秒	分	时	天	周	月	年

0 * 14 * * ? *	: 代表每天从14点开始,每一分钟执行一次。
0 0 14 * * ? * : 代表每天的14点执行一次任务。

可使用 Corn 在线生成表达式:http://cron.qqe2.com/,来检测 Cron 的合理性。

Corn 示例:每2分钟执行一次。

@Scheduled(cron = "0 0/2 * * * ?")
public void test() {
int j = 0;
for (int i = 0; i < 10; i++) {
log.info("Scheduled测试");
j++;
log.info("j的值为:" + j);
try {
Thread.sleep(1000 * 20);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

效果:

总结

如上述代码所示,设置 test() 方法每2分钟执行一次。但如果前一个任务执行时长超过了2分钟,则第二个任务会等待前一个任务完成后的一段时间后再执行第二个任务。


Spring 中使用 @Scheduled 创建定时任务的更多相关文章

  1. SpringBoot中使用@Scheduled创建定时任务

    SpringBoot中使用@Scheduled创建定时任务 定时任务一般会在很多项目中都会用到,我们往往会间隔性的的去完成某些特定任务来减少服务器和数据库的压力.比较常见的就是金融服务系统推送回调,一 ...

  2. Spring Boot中使用@Scheduled创建定时任务

    我们在编写Spring Boot应用中经常会遇到这样的场景,比如:我需要定时地发送一些短信.邮件之类的操作,也可能会定时地检查和监控一些标志.参数等. 创建定时任务 在Spring Boot中编写定时 ...

  3. 定时任务-----Springboot中使用Scheduled做定时任务----http://www.cnblogs.com/lirenqing/p/6596557.html

    Springboot中使用Scheduled做定时任务---http://www.cnblogs.com/lirenqing/p/6596557.html 已经验证的方案: pom文件加入依赖 < ...

  4. SpringBoot使用@Scheduled创建定时任务

    定时任务一般会存在中大型企业级项目中,为了减少服务器.数据库的压力往往会采用时间段性的去完成某些业务逻辑.比较常见的就是金融服务系统推送回调,一般支付系统订单在没有收到成功的回调返回内容时会持续性的回 ...

  5. 通过spring 中的@Scheduled来执行定时任务

    以前开发定时任务的功能的时候,是框架里面写好的quartz配置方式,由于功力尚浅,感觉定时跑披定时任务什么的云里雾里,很高大上,每次都不知道怎么修改配置,后来几次接触定时任务发现,还是比较好掌握的,特 ...

  6. Springboot中使用Scheduled做定时任务

    在开发中,定时任务是常见的功能,在spring boot 下开发定时任务其实很简单,具体代码如下: 1.配置依赖包pom.xml 由于默认的maven仓库经常访问不了,这里采用了阿里云的maven仓库 ...

  7. spingboot中使用scheduled设置定时任务注意事项

    在spring开发过程中经常会遇到需要定时执行的任务,如定时生成报表,定时推送消息等任务. springboot 提供了简单的 @Scheduled 表达式来配置定时任务.该方式默认是单线程的,任务在 ...

  8. spring 中使用quartz实现定时任务

    一般开发系统,使用定时任务非常常见.当然也可以用Java实现.比如定时器.大致如下: 1: public static void main(String[] args) { 2: Timer time ...

  9. Spring 中如何自动创建代理(spring中的三种自动代理创建器)

    Spring 提供了自动代理机制,可以让容器自动生成代理,从而把开发人员从繁琐的配置中解脱出来 . 具体是使用 BeanPostProcessor 来实现这项功能. 这三种自动代理创建器 为:Bean ...

随机推荐

  1. NLP(二十一)根据已有文本LSTM自动生成文本

    根据已有文本LSTM自动生成文本 原理 与股票预测类似,用前面的n个字符预测下一个字符 https://www.cnblogs.com/peng8098/p/keras_5.html 代码 from ...

  2. txt 文件的归并和分割

    1.归并 import os # 1.获取需要整合的文件目录下的 filepath = "G:\\我的python\\尹成\\python基础\\day13\\详细分类\\详细地区" ...

  3. 图论之拓扑排序 poj 2367 Genealogical tree

    题目链接 http://poj.org/problem?id=2367 题意就是给定一系列关系,按这些关系拓扑排序. #include<cstdio> #include<cstrin ...

  4. 026 模块3-random库的使用

    目录 一.random库基本介绍 1.1 random库概述 二.基本随机数函数 2.1 随机数种子 三.扩展随机数函数 3.1 随机数函数的使用 一.random库基本介绍 random库是使用随机 ...

  5. java读写文件IO

    package Common.readFile; import Common.tool.User; import com.fasterxml.jackson.databind.ObjectMapper ...

  6. 如何在IDEA中导入一个普通的java工程

    1.如下: 2.如下,选中要导入的工程: 3.如下: 4.如下图 5.点击next,后如下图: 6.点击next后,如下图: 7.点击next后,如下图: 8.点击next后,如下图: 9.点击nex ...

  7. 算法与数据结构基础 - 递归(Recursion)

    递归基础 递归(Recursion)是常见常用的算法,是DFS.分治法.回溯.二叉树遍历等方法的基础,典型的应用递归的问题有求阶乘.汉诺塔.斐波那契数列等,可视化过程. 应用递归算法一般分三步,一是定 ...

  8. .Net基础篇_学习笔记_第四天_switch-case02

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  9. 关于Oracle12c中无scott用户的问题

    我目前预习是通过视频,学到此处视频里的老师要登录scott用户,而我无法登陆,显示用户不存在,虽然在Oracle文件中也可以找到scott.sql文件,但经过网上教程创建用户后我觉得很麻烦而且没有成功 ...

  10. FaceBook快捷登入

    关于集成FaceBook快捷登入,我上回做了个最简单的版本,所有Web端通用,在这边共享下,有更好的解决方案的,麻烦评论留个地址,有不妥之处请指正. 首先,我们先加载Facebook的Js windo ...