Spring @Scheduled定时任务的fixedRate,fixedDelay,cron的作用和不同

一.   三种定时类型。

1.cron  --@Scheduled(cron="0/5 * * * *?")

当时间达到设置的时间会触发事件。上面那个例子会每5秒执行一次。

  • 2018/1/4 14:27:30
  • 2018/1/4 14:27:35
  • 2018/1/4 14:27:40
  • 2018/1/4 14:27:45
  • 2018/1/4 14:27:50

2.fixedRate --@Scheduled(fixedRate=2000)

每两秒执行一次时间。

3.fixedDelay --@Scheduled(fixedDelay=2000)

每次任务执行完之后的2s后继续执行

看字面意思容易理解,但是任务执行长度超过周期会怎样呢?

不多说,直接上图:

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;  

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

@Component
public class MyProcessor{  

    DateFormat sdf = new SimpleDateFormat("HH:mm:ss");  

    int[] delays = new int[]{8,3,6,2,2};
    int index = 0;  

    @Scheduled(cron = "0/5 * * * * ?}")
    public void process() {
        try {
            if(index > delays.length - 1){
                if(index == delays.length){
                    System.out.println("---------- test end at " + sdf.format(new Date()) + " ---------");
                }
                index ++;
                return;
            }else{
                System.out.println(index + ":start run at" + sdf.format(new Date()));
            }
            Thread.sleep(delays[index] * 1000);
            System.out.println(index + ":end run at " + sdf.format(new Date()));
            index ++;
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}  

原文地址:https://www.cnblogs.com/zouhong/p/11332126.html

时间: 2024-10-18 09:24:54

Spring @Scheduled定时任务的fixedRate,fixedDelay,cron的作用和不同的相关文章

spring @Scheduled定时任务使用说明及基本工作原理介绍

使用说明及工作原理: package com.example.spring.async; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import com.example.spring.MyLog; /** * 定时任务使用示例 * 1.启动类增加注解 @EnableScheduling * 2.相应类声明为服务 @Servic

Spring @Scheduled定时任务动态修改cron参数

在定时任务类上增加@EnableScheduling注解,并实现SchedulingConfigurer接口.(值得注意的是:@EnableScheduling对Spring的版本要求比较高,一开始使用的3.2.6版本时一直未成功,后来改成4.2.5版本就可以了) 设置一个静态变量cron,用于存放任务执行周期参数. 另辟一线程,用于模拟实际业务中外部原因修改了任务执行周期. 设置任务触发器,触发任务执行,其中就可以修改任务的执行周期. 啦啦啦

Spring Boot 定时任务 @Scheduled

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

使用轻量级Spring @Scheduled注解执行定时任务

WEB项目中需要加入一个定时执行任务,可以使用Quartz来实现,由于项目就一个定时任务,所以想简单点,不用去配置那些Quartz的配置文件,所以就采用了Spring @Scheduled注解来实现了定时任务.在这里做个备注. spring配置文件  xmlns中加入一段: xmlns:task="http://www.springframework.org/schema/task" 然后xsi:schemaLocation多加下面的内容: http://www.springframe

Spring Scheduled实现定时任务

1 在.xml配置文件中引入命名空间 xmlns:task="http://www.springframework.org/schema/task" http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd" 2 设置自动发现 <task:annotation-driven/> 3 在需要定时执行的方法上加上@S

使用spring @Scheduled注解运行定时任务、

曾经框架使用quartz框架运行定时调度问题. 老大说这配置太麻烦.每一个调度都须要多加在spring的配置中. 能不能降低配置的量从而提高开发效率. 近期看了看spring的 scheduled的使用注解的方式进行调度. 感觉非常方便.起码配置的东西少了非常多. 所以留下来以备忘了. 首先要配置我们的spring.xml xmlns 多加以下的内容. xmlns:task="http://www.springframework.org/schema/task" 然后xsi:schem

Spring Task定时任务的配置和使用详解

spring中使用定时任务 1.基于xml配置文件使用定时任务 首先配置spring开启定时任务 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:task

Spring Boot 定时任务单线程和多线程

Spring Boot 的定时任务: 第一种:把参数配置到.properties文件中: 代码: package com.accord.task; import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; /** * 从配置

SpringBoot系列:Spring Boot定时任务Spring Schedule

Spring Schedule是Spring提供的定时任务框架,相较于Quartz,Schedule更加简单易用,在中小型应用中,对于大部分需求,Schedule都可以胜任. 一.Spring Schedule使用演示 在 SpringBoot使用Spring Schedule非常简单,因为SpringBoot自身的starter中已经集成了Schedule,而不需要我们做更多的处理. 使用@EnableScheduling注解开启定时功能,该注解可以使用在启动类上,也可以注解于定时任务的类上.