精华内容
下载资源
问答
  • @Scheduled注解 @Scheduled(fixedRate = 5000) :上一次执行开始时间点之后5秒再执行 @Scheduled(fixedDelay = ...initialDelay表示第一次调用前的延时,单位毫秒,必需配合cron、fixedDelay或者fixedRate来使用。 .
    • @Scheduled注解。
    • @Scheduled(fixedRate = 5000) :上一次执行开始时间点之后5秒再执行。
    • @Scheduled(fixedDelay = 5000) :上一次执行完毕时间点之后5秒再执行。
    • @Scheduled(initialDelay=1000, fixedRate=5000)
      :第一次延迟1秒后执行,之后按fixedRate的规则每5秒执行一次。initialDelay表示第一次调用前的延时,单位毫秒,必需配合cron、fixedDelay或者fixedRate来使用。
    • @Scheduled(cron="*/5 * * * * *"):通过cron表达式定义规则,与fixedDelay类似,上次执行完毕后才进行下次调度。
    package com.programb;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class ScheduleTaskApplication {
    
    	public static void main(String[] args) {
    		SpringApplication.run(ScheduleTaskApplication.class, args);
    	}
    }
    
    
    package com.programb.config;
    
    import org.apache.ibatis.annotations.Mapper;
    import org.apache.ibatis.annotations.Select;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.scheduling.annotation.EnableScheduling;
    import org.springframework.scheduling.annotation.SchedulingConfigurer;
    import org.springframework.scheduling.config.ScheduledTaskRegistrar;
    import org.springframework.scheduling.support.CronTrigger;
    import org.springframework.util.StringUtils;
    
    import java.time.LocalDateTime;
    
    @Configuration
    @EnableScheduling
    public class CompleteScheduleConfig implements SchedulingConfigurer {
    
        @Mapper
        public interface CronMapper {
            @Select("select cron from cron limit 1")
            String getCron();
        }
    
        @Autowired
        @SuppressWarnings("all")
        CronMapper cronMapper;
    
        @Override
        public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
            taskRegistrar.addTriggerTask(
    
                    () -> System.out.println("programb" + LocalDateTime.now().toLocalTime()),
                    triggerContext -> {
                        String cron = cronMapper.getCron();
                        if (StringUtils.isEmpty(cron)) {
                        }
                        return new CronTrigger(cron).nextExecutionTime(triggerContext);
                    }
            );
        }
    
    }
    
    package com.programb.config;
    
    import org.springframework.context.annotation.Configuration;
    import org.springframework.scheduling.annotation.EnableScheduling;
    import org.springframework.scheduling.annotation.Scheduled;
    
    import java.time.LocalDateTime;
    
    @Configuration 
    @EnableScheduling 
    public class SimpleScheduleConfig {
        @Scheduled(cron = "programb")
        private void configureTasks() {
            System.err.println("programb" + LocalDateTime.now());
        }
    }
    
    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/socks?useSSL=false
        username: root
        password: programb
    
    <?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>
    
        <groupId>com.programb</groupId>
        <artifactId>springboot-schedule-task</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
        <name>springboot-schedule-task</name>
        <description>SpringBoot</description>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.0.M5</version>
            <relativePath/>
        </parent>
    
        <dependencies>
            <dependency><!--添加Web依赖 -->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency><!--添加Mybatis依赖 -->
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>1.3.1</version>
            </dependency>
            <dependency><!--添加MySql依赖 -->
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
            <dependency><!--添加Test依赖 -->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <repositories>
            <repository>
                <id>spring-snapshots</id>
                <url>http://repo.spring.io/snapshot</url>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
            <repository>
                <id>spring-milestones</id>
                <url>http://repo.spring.io/milestone</url>
            </repository>
        </repositories>
        <pluginRepositories>
            <pluginRepository>
                <id>spring-snapshots</id>
                <url>http://repo.spring.io/snapshot</url>
            </pluginRepository>
            <pluginRepository>
                <id>spring-milestones</id>
                <url>http://repo.spring.io/milestone</url>
            </pluginRepository>
        </pluginRepositories>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    </project>
    
    
    
    展开全文
  • 一、实现功能 通过spring的@Scheduling,实现定时执行指定任务。...4.fixedRate单位毫秒)按照固定频率启动执行 5.initialDelay单位毫秒,和上面三个参数搭配使用,首次执行延时 备注:2-5的...

    一、实现功能

    通过spring的@Scheduling,实现定时执行指定任务。

    二、基本参数

    1.cron 值为字符串

    调用实例:


    2.zone设置时区
    3.fixedDelay(单位毫秒),每次方法执行完毕后,休息固定时间后再次启动
    4.fixedRate(单位毫秒)按照固定频率启动执行
    5.initialDelay单位毫秒,和上面三个参数搭配使用,首次执行延时

    备注:2-5的详细对应

    其中,2-5的调用实例

    三、步骤

    1.注解启动位置
    @EnableScheduling应当在@SpringBootApplication注释的类上注释,例如:


    2.方法上添加@Scheduled注解

    3.添加线程
    默认只有一个线程执行Scheduled定时任务,添加线程执行,可以通过添加实现接口SchedulingConfigurer的配置类SchedulingConfigurerConfiguration实现添加线程,异步执行:

    四、参考

    1.源码:https://github.com/gexiangdong/tutorial/tree/master/section-08
    2.葛香东老师课程
    https://study.163.com/course/courseLearn.htm?courseId=1005213034#/learn/video?lessonId=1052750212&courseId=1005213034
     

    展开全文
  • @Scheduled注解参数: ... fixedRate:表示按一定的频率执行任务,参数类型为long,单位ms; fixedRateString: 与fixedRate的含义一样,只是将参数类型变为String; initialDelay:表示延迟多久再第一次执

    @Scheduled注解参数:

    • cron:cron表达式,指定任务在特定时间执行;
    • fixedDelay:表示上一次任务执行完成后多久再次执行,参数类型为long,单位ms;
    • fixedDelayString:与fixedDelay含义一样,只是参数类型变为String;
    • fixedRate:表示按一定的频率执行任务,参数类型为long,单位ms;
    • fixedRateString: 与fixedRate的含义一样,只是将参数类型变为String;
    • initialDelay:表示延迟多久再第一次执行任务,参数类型为long,单位ms;
    • initialDelayString:与initialDelay的含义一样,只是将参数类型变为String;
    • zone:时区,默认为当前时区。

    cron表达式语法

    [秒] [分] [小时] [日] [月] [周] [年]
    序号 说明 必填 允许填写的值 允许的通配符
    1 0-59 , - * /
    2 0-59 , - * /
    3 0-23 , - * /
    4 1-31 , - * ? / L W
    5 1-12 / JAN-DEC , - * /
    6 1-7 or SUN-SAT , - * ? / L #
    7 1970-2099 , - * /

    通配符说明:

    • * 表示所有值。 例如:在分的字段上设置 *,表示每一分钟都会触发。
    • ? 表示不指定值。使用的场景为不需要关心当前设置这个字段的值。例如:要在每月的10号触发一个操作,但不关心是周几,所以需要周位置的那个字段设置为”?” 具体设置为 0 0 0 10 * ?
    • - 表示区间。例如 在小时上设置 “10-12”,表示 10,11,12点都会触发。
    • , 表示指定多个值,例如在周字段上设置 “MON,WED,FRI” 表示周一,周三和周五触发
    • / 用于递增触发。如在秒上面设置”5/15” 表示从5秒开始,每增15秒触发(5,20,35,50)。 在日字段上设置’1/3’所示每月1号开始,每隔三天触发一次。(/后边的参数如果循环到下一个循环是不会执行的,只会在当前循环中去循环,如:1/58->会在1、59秒执行,但1/59->则只会在1秒的时候执行,不会跳到下一个循环去执行的)
    • L 表示最后的意思。在日字段设置上,表示当月的最后一天(依据当前月份,如果是二月还会依据是否是润年[leap]), 在周字段上表示星期六,相当于”7”或”SAT”。如果在”L”前加上数字,则表示该数据的最后一个。例如在周字段上设置”6L”这样的格式,则表示“本月最后一个星期五”
    • W 表示离指定日期的最近那个工作日(周一至周五). 例如在日字段上置”15W”,表示离每月15号最近的那个工作日触发。如果15号正好是周六,则找最近的周五(14号)触发, 如果15号是周未,则找最近的下周一(16号)触发.如果15号正好在工作日(周一至周五),则就在该天触发。如果指定格式为 “1W”,它则表示每月1号往后最近的工作日触发。如果1号正是周六,则将在3号下周一触发。(注,”W”前只能设置具体的数字,不允许区间”-“)。
    • # 序号(表示每月的第几个周几),例如在周字段上设置”6#3”表示在每月的第三个周六.注意如果指定”#5”,正好第五周没有周六,则不会触发该配置(用在母亲节和父亲节再合适不过了) ;小提示:’L’和 ‘W’可以一组合使用。如果在日字段上设置”LW”,则表示在本月的最后一个工作日触发;周字段的设置,若使用英文字母是不区分大小写的,即MON与mon相同。

    示例

    每隔5秒执行一次:*/5 * * * * ?

    每隔1分钟执行一次:0 */1 * * * ?

    每天23点执行一次:0 0 23 * * ?

    每天凌晨1点执行一次:0 0 1 * * ?

    每月1号凌晨1点执行一次:0 0 1 1 * ?

    每月最后一天23点执行一次:0 0 23 L * ?

    每周星期六凌晨1点实行一次:0 0 1 ? * L

    在26分、29分、33分执行一次:0 26,29,33 * * * ?

    每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?

    2. zone

    时区,接收一个java.util.TimeZone#IDcron表达式会基于该时区解析。默认是一个空字符串,即取服务器所在地的时区。比如我们一般使用的时区Asia/Shanghai。该字段我们一般留空。

    3. fixedDelay

    上一次执行完毕时间点之后多长时间再执行。如:

     

    @Scheduled(fixedDelay = 5000) //上一次执行完毕时间点之后5秒再执行
    

    4. fixedDelayString

    3. fixedDelay 意思相同,只是使用字符串的形式。唯一不同的是支持占位符。如:

     

    @Scheduled(fixedDelayString = "5000") //上一次执行完毕时间点之后5秒再执行
    

    占位符的使用(配置文件中有配置:time.fixedDelay=5000):

     

        @Scheduled(fixedDelayString = "${time.fixedDelay}")
        void testFixedDelayString() {
            System.out.println("Execute at " + System.currentTimeMillis());
        }
    

    运行结果:

     

    占位符的使用

    5. fixedRate

    上一次开始执行时间点之后多长时间再执行。如:

     

    @Scheduled(fixedRate = 5000) //上一次开始执行时间点之后5秒再执行
    

    6. fixedRateString

    5. fixedRate 意思相同,只是使用字符串的形式。唯一不同的是支持占位符。

    7. initialDelay

    第一次延迟多长时间后再执行。如:

     

    @Scheduled(initialDelay=1000, fixedRate=5000) //第一次延迟1秒后执行,之后按fixedRate的规则每5秒执行一次
    

    8. initialDelayString

    7. initialDelay 意思相同,只是使用字符串的形式。唯一不同的是支持占位符。

    That's all ! Thanks for reading.

    另外如果要想@Scheduled注解生效需要添加配置

    package com.example.demo;
    
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
    import org.springframework.aop.interceptor.SimpleAsyncUncaughtExceptionHandler;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.scheduling.TaskScheduler;
    import org.springframework.scheduling.annotation.AsyncConfigurer;
    import org.springframework.scheduling.annotation.EnableAsync;
    import org.springframework.scheduling.annotation.EnableScheduling;
    import org.springframework.scheduling.annotation.SchedulingConfigurer;
    import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
    import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
    import org.springframework.scheduling.config.ScheduledTaskRegistrar;
    
    import java.util.concurrent.Executor;
    import java.util.concurrent.Executors;
    import java.util.concurrent.ThreadPoolExecutor;
    
    
    /**
     * 在用springboot框架做定时任务的时候,大部分情况都是直接通过@Scheduled注解来指定定时任务的。
     * 但是当你有多个定时任务时,@Scheduled并不一定会按时执行。
     * 因为使用@Scheduled的定时任务虽然是异步执行的,但是,默认不同的定时任务之间并不是并行的。
     *
     * 当未手动指定taskScheduler时,会通过Executors.newSingleThreadScheduledExecutor()创建默认的单线程线程池,
     * 且该线程池的拒绝策略为AbortPolicy,这种策略在线程池无可用线程时丢弃任务,
     * 并抛出异常RejectedExecutionException。
     *
     */
    @Slf4j
    @Configuration
    @EnableScheduling
    @EnableAsync
    public class ScheduledConfig implements
            SchedulingConfigurer
    //        , AsyncConfigurer
    {
    
    
        /**
         * ThreadPoolTaskExecutor是一个专门用于执行任务的类。
         * ThreadPoolTaskScheduler是一个专门用于调度任务的类。
         * 一个ThreadPoolTaskExecutor通过它的corePoolSize , maxPoolSize , keepAliveSeconds和queueCapacity属性在线程池中提供细粒度的配置。
         * 诸如ThreadPoolTaskScheduler这样的调度器不提供这样的配置。
         */
    
    
        /** 最大线程数 */
        private static final int maxPoolSize = 10;
        /** 线程池名前缀 */
        private static final String threadNamePrefix = "yu-scheduled-";
    
        @Bean("asyncExecutorScheduled") // bean的名称,默认为首字母小写的方法名,如果不声明则会使用方法名
        public ThreadPoolTaskScheduler asyncExecutorScheduled(){
            ThreadPoolTaskScheduler executor = new ThreadPoolTaskScheduler();
            executor.setPoolSize(maxPoolSize);
            executor.setThreadNamePrefix(threadNamePrefix);
            executor.setAwaitTerminationSeconds(60);
            executor.setWaitForTasksToCompleteOnShutdown(true);
            // 初始化
            executor.initialize();
            return executor;
        }
    
        @Override
        public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
            taskRegistrar.setTaskScheduler(this.asyncExecutorScheduled());
        }
    
    //    /**
    //     * 处理异步方法调用时要使用的实例
    //     * @return
    //     */
    //    @Override
    //    public Executor getAsyncExecutor() {
    //        return this.asyncExecutorScheduled();
    //    }
    //
    //    /**
    //     * 在使用void返回类型的异步方法执行期间抛出异常时要使用的实例。
    //     * @return
    //     */
    //    @Override
    //    public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
    //        return new SimpleAsyncUncaughtExceptionHandler();
    //    }
    }
    

    或者:

    package com.example.demo;
    
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.scheduling.annotation.EnableScheduling;
    
    import java.util.concurrent.ScheduledThreadPoolExecutor;
    
    
    /**
     * scheduled 配置文件的第二种使用  不建议使用
     */
    @Slf4j
    @Configuration
    @EnableScheduling
    public class ScheduledConfig2 {
    
    
    
        @Bean
        public ScheduledThreadPoolExecutor scheduledExecutorService() {
            ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(10);
            return executor;
        }
    
    
    }
    

    实例:

    package com.example.demo.service;
    
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.scheduling.annotation.Scheduled;
    import org.springframework.stereotype.Service;
    
    import java.util.Date;
    
    /**
     * @Scehduled 定时任务测试
     */
    @Slf4j
    @Service
    public class ScheduledService {
        /**5
         *测试
         */
        @Scheduled(cron = "*/5 * * * * *")
        public void testScheduled1(){
            log.info("定时1:{}",new Date());
        }
    
        @Scheduled(cron = "*/5 * * * * *")
        public void testScheduled2(){
            log.info("定时2:{}",new Date());
        }
    
    }
    

    结果:

    2020-05-25 16:36:00.001  INFO 9116 --- [ yu-scheduled-1] c.example.demo.service.ScheduledService  : 定时2:Mon May 25 16:36:00 CST 2020
    2020-05-25 16:36:00.005  INFO 9116 --- [ yu-scheduled-2] c.example.demo.service.ScheduledService  : 定时1:Mon May 25 16:36:00 CST 2020
    2020-05-25 16:36:05.004  INFO 9116 --- [ yu-scheduled-1] c.example.demo.service.ScheduledService  : 定时2:Mon May 25 16:36:05 CST 2020
    2020-05-25 16:36:05.004  INFO 9116 --- [ yu-scheduled-2] c.example.demo.service.ScheduledService  : 定时1:Mon May 25 16:36:05 CST 2020
    

    参考自:https://www.jianshu.com/p/1defb0f22ed1

     

    展开全文
  • spring boot 计划任务,定时任务 开启计划任务的支持:在配置类上面使用注解 @EnableScheduling 在计划任务执行的方法上使用...fixedRate 属性是在指定的时间间隔重复执行,单位是毫秒   @Scheduled(cron=”0 11 11 ? *

    spring boot 计划任务,定时任务

    开启计划任务的支持:在配置类上面使用注解  @EnableScheduling

    在计划任务执行的方法上使用注解 @Scheduled 声明这是一个计划任务

     

    @Scheduled(fixedRate=5000)

    fixedRate 属性是在指定的时间间隔重复执行,单位是毫秒

     

    @Scheduled(cron=”0 11 11 ? * *”)

    指定方法在固定的事件执行, 如在每天的十一点十一分执行

    展开全文
  • 1.通过使用@Scheduled注解的方式,fixedRate函数,它指定的是从调用开始时间到指定时间之后,单位毫秒 @Scheduled(fixedRate = 1000*60*60*12) 2.spring在初始化bean后,通过“postProcessAfterInitialization”...
  • springboot定时任务介绍

    2019-10-14 13:47:09
    第一种就是fixedRate,他表示以一种固定频率去执行,单位为毫秒,例如@Scheduled(fixedRate = 5000) 表示为每五秒执行一次 第二种为cron,他可以表达某种特定频率,例如每天晚上三点执行,每个星期三中午十二点等 ...
  • 定时任务 cron表达式解析 省略定时任务的配置,其实就是两个注解@EnableScheduling 和 @Scheduled...配置多少分钟执行一次,fixedDelay和fixedRate单位是毫秒,所以1分钟就是60秒×1000 他们的区别在于,fixed...
  • 以下是定时任务的参数 ...fixedRate:从上一个任务开始到下一个任务开始的间隔,单位毫秒 fixedRateString:同上,时间值是String类型 initialDelay:任务首次执行延迟的时间,单位毫秒 initialDelay
  • @Scheduled所支持的参数: 1.cron:cron表达式,指定任务在特定时间执行; 2.fixedDelay:表示上一次任务执行完成后多久再次执行,参数...4.fixedRate:表示按一定的频率执行任务,参数类型为long,单位ms; 5.fixe...
  • @Scheduled参数及cron表达式解释

    千次阅读 2019-05-05 16:19:41
    @Scheduled支持以下8个参数: 1.cron:表达式,指定任务在特定时间执行; 2.fixedDelay:表示上一次任务执行完成后多久...4.fixedRate:表示按一定的频率执行任务,参数类型为long,单位ms; 5.fixedRateStri...
  • 定时任务中会用到@Scheduled注解。@Scheduled中会用到几个关键字...fixedDelay:表示上一次任务执行完之后多久再次执行,参数类型为long,单位:msfixedRate:表示按一定的频率执行任务,参数类型long,单位:msinit...
  • 在需要执行的函数位置写入注解@Scheduled @Component public class taskController { private static final ... @Scheduled(fixedRate = 3000) //单位为毫秒 public void runScheduled(){ System.out.pri
  • 删除线格式 ## SpringBoot 定时器、整合使用 ...") //单位fixedRate = 5000 毫秒 @Component //泛用注解 @EnableSchcduling //开启定时任务 Springboot整合使用 JdbcTemplate 注入模板 JdbcTemplate jdbd j
  • Spring Boot定时任务

    2017-12-29 14:47:35
     1、在启动类前面加上@EnableScheduling开启定时任务功能 2、编写定时任务,代码如下: ... @Scheduled(fixedRate = 3000)//单位是毫秒 public void schedule1() { System.out.println("xxxxx")
  • @schedule ... fixedDelay:表示上一次任务执行完成后多久再次执行,参数类型为long,单位ms; fixedDelayString:与fixedDelay含义一样,只是参数类型变为String; fixedRate:表示按一定的频率...
  • 在java中想要实现定时器其中一种方式通过线程池实现 示例1: 示例2: 而在SpringBoot中, 则可以使用简单的...fixedRate属性代表每隔多久执行一次, 单位是毫秒 @EnableScheduling @Component @Slf4j public class...
  • 目录 1.创建一个springboot的空项目 2.添加开启定时任务的注解@EnableScheduling 3.添加定时任务的注解@Scheduled 1.创建一个springboot的空...fixedRate 表示定时任务的执行频率,单位毫秒 。所以 30*1000表示.
  • 一、Spring自带定时任务 Spring自带定时任务相关类位于spring-context包 1.1 注解 @Scheduled 标记方法定时执行。所标记的方法必须没有参数,返回值会被忽视。...fixedRate 上次调用开始和下次调用开始间隔时间,
  • 背景:页面会有一个设置时间频率的输入框,这个频率也是定时任务的执行时间间隔,单位是分钟;   思路:按springboot的@Scheduled方式配置定时任务,其中有cron规则,和fixedRate、fixedDelay配置,配置规则是...
  • 定时任务与网页去重、代理的使用 一、定时任务 在案例中我们使用的是Spring内置的Spring Task,这是Spring3.0加入的定时任务功能。我们使用注解的方式定时启动爬虫进行数据爬取。 我们使用的是@...4)fixedRate
  • 文章目录一、三种定时类型1.cron二、执行周期图解 ## Spring @Scheduled定时任务三种定时类型 一、三种定时类型 1.cron 当时间达到设置的时间会触发事件。 @Scheduled(cron="0/5 *... 固定时间循环执行,单位ms...

空空如也

空空如也

1 2
收藏数 22
精华内容 8
关键字:

fixedrate单位