精华内容
下载资源
问答
  • 2022-02-16 15:40:26

    一、认识符号

    符号名作用举例
    ,连接符,表示列出枚举值。如在 minutes 域使用 2,15 ,表示 2 分和 15 分执行一次。
    -连接符,表示范围如在 minutes 域使用 2-15 ,表示从 2 分到 15 分,每分钟执行一次。
    /连接符,表示值增加的幅度如 n/m ,表示从第 n 秒开始,每隔 m 秒执执行一次,5/15 -->> 5, 20, 35, 50
    *表示匹配该域的任意值如在 minutes 域使用,表示每分钟都会触发一次
    ?表示匹配该域的任意值,但只有 daysOfMonth 和 daysOfWeek 域才能使用,因为 daysOfMonth 和 daysOfWeek 域会相互影响,所以两个域不能同时使用 ? 。
    ------------特殊符号------------
    L表最后
    W表有效工作日
    LW表最后某月最后一个工作日
    #表用于确定每个月第几个星期几

    二、符号作用范围

    时间符号
    Seconds可出现", - * /"四个字符,有效范围为0-59的整数
    Minutes可出现", - * /"四个字符,有效范围为0-59的整数
    Hours可出现", - * /"四个字符,有效范围为0-23的整数
    DayofMonth可出现", - * / ? L W C"八个字符,有效范围为0-31的整数
    Month可出现", - * /"四个字符,有效范围为1-12的整数或JAN-DEc
    DayofWeek可出现", - * / ? L C #"四个字符,有效范围为1-7的整数或SUN-SAT两个范围。1表示星期天,2表示星期一, 依次类推
    Year可出现", - * /"四个字符,有效范围为1970-2099年

    三、表达格式
    cron表达式语法
    [秒] [分] [小时] [日] [月] [周] [年]注:[年]不是必须的域,可以省略[年],则一共6个域

    四、案例

    说明表达具体意义
    每天定时“0 0 12 * * ?”每天中午十二点触发
    “0 0-5 14 * * ?”每天14:00至14:05每分钟一次触发
    “0 0/5 14 * * ?”每天从下午2点开始到2:55分结束每5分钟一次触发
    更多相关内容
  • SpringBoot定时器

    2021-05-28 15:12:13
    SpringBoot定时器
  • springboot定时器

    2022-01-12 09:20:38
    1.现在启动类里面加上 @EnableScheduling 这个注解 2.差不多就是下面这样 package org.jeecg.modules.xyda.date.entity; import org.jeecg.modules.xyda.nddjpd.entity.JgRateResult; import org.jeecg.modules....

    1.现在启动类里面加上 @EnableScheduling 这个注解
    2.差不多就是下面这样

    package org.jeecg.modules.xyda.date.entity;
    
    import org.jeecg.modules.xyda.nddjpd.entity.JgRateResult;
    import org.jeecg.modules.xyda.xydacx.rate.entity.RateResult;
    import org.jeecg.modules.xyda.xydacx.rate.service.RateService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.scheduling.annotation.Scheduled;
    import org.springframework.stereotype.Component;
    
    import java.io.File;
    import java.util.Date;
    import java.util.List;
    import java.util.logging.Logger;
    
    @Component
    public class TimingWs {
    
        @Autowired
        private RateService rateService;
    
        /**
         * 每年的1月11号执行此定时任务
         * ----功能:把一些未确认的企业自动确认
         */
        @Scheduled(cron="0 10 20 11 1 ? ")
        public void myTimer(){
            System.out.println("----------------------定时任务执行成功");
            List<RateResult> list = rateService.findAllListNotSure();
            for (int i=0;i<list.size();i++){
                rateService.setZt(list.get(i).getTyshxydm(),list.get(i).getPdjg());
            }
        }
    
    
    }
    

    that’s all …end

    展开全文
  • Java定时器——springboot定时器篇 文章目录Java定时器——springboot定时器篇前言一、Java定时器是什么?二、路径1.体验2.编写启动类,添加定时器注解3.编写处理类cron表达式总结结语 前言 大家好我是程序员阿毛...

    Java定时器——springboot定时器篇



    前言

    大家好我是程序员阿毛,今天给大家带来的是Java定时器的使用,文章内容简洁明了,通俗易懂,适用于新手入门。本文如有出处还望各位看官指点,谢谢大家。


    提示:以下是本篇文章正文内容,下面案例可供参考

    一、Java定时器是什么?

    示例:java定时器就是用于在规定时间触发指定效果的功能。

    二、路径

    • 将采用Spring boot提供的定时器完成Schedule
    • 前提:可以作为web服务器启动即可

    1.体验

    • 添加web坐标

    坐标:

        <dependencies>
            <!--web起步依赖-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
        </dependencies>
    

    2.编写启动类,添加定时器注解

    代码如下(示例):

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.scheduling.annotation.EnableScheduling;
    
    /**
     * @author 阿毛
     */
    @SpringBootApplication
    @EnableScheduling       //开启定时器
    public class TestScheduleApplication {
        public static void main(String[] args) {
            SpringApplication.run(TestScheduleApplication.class,args);
        }
    }
    
    

    3.编写处理类

    import org.springframework.scheduling.annotation.Scheduled;
    import org.springframework.stereotype.Component;
    
    /**
     * @author 阿毛
     */
    @Component
    public class TestSchedule {
        /**
         * 每3秒执行一次
         */
        @Scheduled(cron = "0/3 * * * * ?")
        public void handler() {
            System.out.println(System.currentTimeMillis());
        }
    }
    

    cron表达式

    • cron语法:由7部分组成,第七部分为年,一般不写
    秒 分 时 日 月 周 (年)
    
    • 第四位和第六位,至少有一个
    • cron组成取值
      cron组成取值
    • 常见cron表达式
    "30 * * * * ?" 每半分钟触发任务
    "30 10 * * * ?" 每小时的10分30秒触发任务
    "30 10 1 * * ?" 每天1点10分30秒触发任务
    "30 10 1 20 * ?" 每月20号1点10分30秒触发任务
    "30 10 1 20 10 ? *" 每年10月20号1点10分30秒触发任务
    "30 10 1 20 10 ? 2011" 2011年10月20号1点10分30秒触发任务
    "30 10 1 ? 10 * 2011" 2011年10月每天1点10分30秒触发任务
    "30 10 1 ? 10 SUN 2011" 2011年10月每周日1点10分30秒触发任务
    "15,30,45 * * * * ?" 每15秒,30秒,45秒时触发任务
    "15-45 * * * * ?" 15到45秒内,每秒都触发任务
    "15/5 * * * * ?" 每分钟的每15秒开始触发,每隔5秒触发一次
    "15-30/5 * * * * ?" 每分钟的15秒到30秒之间开始触发,每隔5秒触发一次
    "0 0/3 * * * ?" 每小时的第0分0秒开始,每三分钟触发一次
    "0 15 10 ? * MON-FRI" 星期一到星期五的10点15分0秒触发任务
    "0 15 10 L * ?" 每个月最后一天的10点15分0秒触发任务
    "0 15 10 LW * ?" 每个月最后一个工作日的10点15分0秒触发任务
    "0 15 10 ? * 5L" 每个月最后一个星期四的10点15分0秒触发任务
    "0 15 10 ? * 5#3" 每个月第三周的星期四的10点15分0秒触发任务
    

    特殊字符解释:

    ,		或
    ——		区间
    *		任意
    ?		忽略
    /		每
    其他特殊字符不常使用,这里就不解释,如有需要可百度查询
    

    总结

    提示:这里对文章进行总结:
    例如:

    • 添加web坐标
    • 编写启动类,添加定时器注解
    • 编写处理类
    • cron表达式使用及语法

    结语

    以上就是文章的全部内容,感谢各位看官的浏览,本文如有出处,还望各位看官指点。
    ——程序员阿毛

    展开全文
  • SpringBoot 定时器的三种方式

    千次阅读 2022-01-26 16:35:00
    SpringBoot 使用定时器的3种方式 1、使用@Scheduled注解定义 @Component public class SimpleSchedule { private Integer time = 0; @Scheduled(cron = "*/6 * * * * ?") //定时器定义,设置执行时间 private ...

    SpringBoot 使用定时器的3种方式

    1、使用@Scheduled注解定义

    @Component
    public class SimpleSchedule {
    
        private Integer time = 0;
        @Scheduled(cron = "*/6 * * * * ?")   //定时器定义,设置执行时间
        private void process() {
            System.out.println("定时器1执行"+time++);
        }
        
      	@Scheduled(fixedDelay = 1*1000)   //定时器定义,设置执行时间 1s
        private void process1() {
            System.out.println("定时器2执行"+time++);
        }
    }
    
    

    需要在添加注解 @EnableScheduling 来扫描定时器并执行:

    @EnableScheduling  //扫描定时器
    @SpringBootApplication
    public class ScheduleDemoApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(ScheduleDemoApplication.class, args);
        }
    
    }
    

    @Scheduled 中的属性有如下几种:

    cron表达式:指定任务在特定时间执行
    fixedDelay:表示上一次任务执行完成后多久再执行,参数类型long,单位:ms
    fixedDelayString:与fixedDelay一样,只是参数类型是String
    fixedRate:表示按一定的频率执行任务,参数类型long,单位:ms 如: fixedRate(5000),表示这个定时器任务每5秒执行一次
    fixedRateString:与fixedRate一样,只是参数类型变为String
    initialDelay:表示延迟多久再第一次执行任务,参数类型为long ,单位:ms
    initialDelayString:与initialDelay一样,只是参数类型String
    

    其中corn表达式的格式举例如下:

    0 0 10,14,16 * * ? 每天上午10点,下午2点,40 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
    0 0 12 ? * WED 表示每个星期三中午120 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:102: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触发
    
    

    2、使用多线程执行定时器

    该种定时器的执行是在方法被调用的时候按照设置的时间执行一次。

    举例如下:

    1)定义线程池(使用 @EnableAsync 开启异步事件的支持)

    @Configuration
    @EnableAsync
    public class AsyConfig {
        /*
      此处成员变量应该使用@Value从配置中读取
       */
        private int corePoolSize = 10;
        private int maxPoolSize = 200;
        private int queueCapacity = 10;
    
        private Integer time = 0;
        @Bean("taskExecutor")
        public Executor taskExecutor() {
            ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
            executor.setCorePoolSize(corePoolSize);
            executor.setMaxPoolSize(maxPoolSize);
            executor.setQueueCapacity(queueCapacity);
            executor.initialize();
            return executor;
        }
    }
    

    2)使用线程池定义需要执行的任务(使用@Service标注对应的类,使用@Async 开启线程支持 ,“taskExecutor” 为线程bean 的ID)

    @Service
    public class TestAsync {
        Logger log = LoggerFactory.getLogger(TestAsync.class);
    
    
        @Async("taskExecutor")
        @Scheduled(cron = "*/10 * * * * ?")
        public void service1() throws InterruptedException {
            log.info("--------start-service1------------");
            Thread.sleep(5000); // 模拟耗时
            log.info("--------end-service1------------");
        }
    
        @Async("taskExecutor")
        @Scheduled(cron = "*/5 * * * * ?")
        public void service2() throws InterruptedException {
    
            log.info("--------start-service2------------");
            Thread.sleep(2000); // 模拟耗时
            log.info("--------end-service2------------");
    
        }
    }
    

    3)调用第2步定义的任务

    @RestController
    public class TestController {
    
        @Autowired
        private TestAsync testAsync;
    
        @GetMapping("/")
        public void test(){
    
            try {
                testAsync.service1();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
    

    4)重启服务测试

    3、使用 ScheduledTaskRegistrar 实现可配置化的定时任务

    1)自定义CompleteScheduleConfig 继承 SchedulingConfigurer

    注意:需要添加 @Component 注解

    @Component
    public class CompleteScheduleConfig implements SchedulingConfigurer {
        /**
         * 执行定时任务.
         */
        @Override
            public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
    		   //设置corn表达式,后续配置在数据库中查询出来
               String cron = "*/6 * * * * ?";
               taskRegistrar.addTriggerTask(
                    //1.添加任务内容(Runnable)
                    ()->{
    
                        System.out.println("定时任务执行,时间为 :"+LocalDateTime.now().toLocalTime());
                    },
                    //2.设置定时时间
                    triggerContext -> {
                        //2.2 合法性校验.
                        if (cron!=null) {
    						//填写异常处理代码
                        }
                        //2.3 返回执行周期(Date)
                        return new CronTrigger(cron).nextExecutionTime(triggerContext);
                    }
            );
    
        }
    
    展开全文
  • Springboot定时器

    2018-06-08 19:26:23
    利用@Configuration,@EnableScheduling,@Scheduled(cron = "....")注解实现任务的定时 1.定时任务入口 /** * 定时任务配置 * @author Pactera * */ @Slf4j @Configuration ... @Aut...
  • ),这个因为本次的重点在于如何添加定时器,本人会在这几天有时间的时候来写一个如何搭建一个简单的springboot的项目的过程。现在时间有限,所以喽。还请各位多包涵。 咳咳。好了 进入主题。 方法一:通过springboot...
  • springboot定时器的使用

    2021-06-29 10:52:20
    1.在需要的类上面加入注解@EnableScheduling 2.在方法上面加入定时规则 每隔2小时运行一次 0 */2 * * * ? 每隔一分钟执行一遍 */1 * * * * ? 每晚的23:56执行这个脚本。 56 23 * * * ? ......
  • 刚发现了个问题,热乎的,我也不知道是不是springboot的bug,还是我使用姿势不对,它的定时器里时区有问题,骚的是,只有服务器上会这样。 打印结果如图: 我用的是最基础的new Date()啊,还有问题,真的麻了。 我...
  • springboot 定时器开启

    2020-05-25 15:36:08
    ),这个因为本次的重点在于如何添加定时器,本人会在这几天有时间的时候来写一个如何搭建一个简单的springboot的项目的过程。现在时间有限,所以喽。还请各位多包涵。 咳咳。好了 进入主题。 方法一:通过...
  • 关于SpringBoot中的定时器, 有时候我们需要对一些方法进行定时操作,这个时候就用到了定时器这个方法 而SpringBoot中直接使用注解方法进行操作, 方便了我们对定时器的使用, 就像这样, 对本方法进行每天的操作, @...
  • 对于SpringBoot定时器使用相当简单 只需在启动类上加入注解@EnableScheduling 1.静态定时器 @Component public class ScheduledDemo{ //@Scheduled(cron = "0 0 0 * * ?")//每天凌晨执行一次 @Scheduled(cron=...
  • 每月十五号执行一次代码 //每天晚上凌晨一点刷新一下 @Scheduled(cron = "0 00 01 ? * *") public void run() { try { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式 ...
  • SpringBoot 定时器总结

    2021-08-25 11:20:05
    基于@Scheduled的定时器 cron配置在类中 cron在配置文件中 cron配置在数据库中 支持动态修改cron的定时器(SchedulingConfigurer) 基于@Scheduled的定时器 这个很简单,使用和这个注解,配置一个cron表达式,在...
  • 实现 SchedulingConfigurer 接口,重写 configureTasks 方法 线程池的bean名称需要设置为 taskScheduler @Configuration @EnableScheduling //当定时任务很多的时候,为了提高任务执行效率,可以采用并行方式执行...
  •   Spring Boot中定时器的配置使用是非常简单的。   假设已经搭建好了一个SpringBoot应用程序。只需要两步。 1、在Application中添加注解@EnableScheduling,我的Application代码如下: package ...
  • springboot定时器使用

    2019-05-17 16:02:10
    springboot定时器的使用,里面有无参方法和有参方法。
  • SpringBoot 定时器执行两次

    千次阅读 2019-04-23 15:40:43
    public class SaewApplication { public static void main(String[] args) { SpringApplication.run(SaewApplication.class, args); } } 启动类不要继承 ...extends SpringBootServletInitializer ...
  • springboot定时器工具

    2020-06-19 20:15:21
    @Scheduled(fixedRate=30*60*1000) 半小时执行一次 @Scheduled(fixedRate=60*60*1000) 一小时执行一次 @Scheduled(cron = "0 0 0 * * ?")每日凌晨执行
  • springboot 定时器定时任务

    千次阅读 2018-02-05 22:41:49
    项目中经常遇到一些需求就是需要你判断某个值是否到达要求的值或者某个条件下需要你执行某个动作...我建立的是springboot项目.代码非 常简单. 以下是我的代码: package com.example.demo.controller; import lombok
  • springboot 定时器

    2018-11-15 23:45:15
    在main函数的类上面加上注解:@EnableScheduling 然后写一个类,注解为:@Component ...fixedRate:固定频率执行定时器 cron:这种表达式为时间定时,表达式自己定: cron一共有7位,但是最后...
  • SpringBoot使用定时器使用方法添加@Scheduled注解 设计cron参数即可package com.clsystem.Comm; import org.springframework.scheduling.annotation.Scheduled; /** * Created by pudding on 2017-11-10.(打卡...
  • } /** * 改变调度的时间 * 步骤: * 1,先停止定时器 * 2,在启动定时器 */ @RequestMapping("changeTask") public String changeTask(){ //停止定时器 endTask(); //定义新的执行时间 future=...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,017
精华内容 2,806
关键字:

springboot定时器

spring 订阅
友情链接: dbj.zip