精华内容
下载资源
问答
  • java 定时任务之一 @Scheduled注解(第一种方法)

    万次阅读 多人点赞 2017-12-12 22:09:22
    使用spring @Scheduled注解执行定时任务: 步骤: 1.xmlns 添加: http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd xmlns:task=...

    (本文仅供参考)

    使用spring @Scheduled注解执行定时任务:

     

    步骤:

    1.xmlns 添加

    http://www.springframework.org/schema/task
    http://www.springframework.org/schema/task/spring-task-3.1.xsd
    xmlns:task="http://www.springframework.org/schema/task"

    2.注入:

    <task:annotation-driven/>

    3.注解写在实现类的方法上,实现类上要有组件的

    展开全文
  • spring定时任务详解(@Scheduled注解)

    万次阅读 多人点赞 2016-07-07 17:09:36
    import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import com.mvc.task.IATask; @Component public class ATask implements IATask{ @Scheduled...

    在springMVC里使用spring的定时任务非常的简单,如下:

    (一)在xml里加入task的命名空间

    xmlns:task="http://www.springframework.org/schema/task" 
    http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.1.xsd

    (二)启用注解驱动的定时任务

    <task:annotation-driven scheduler="myScheduler"/> 
    

    (三)配置定时任务的线程池

    推荐配置线程池,若不配置多任务下会有问题。后面会详细说明单线程的问题。

    <task:scheduler id="myScheduler" pool-size="5"/>

    (四)写我们的定时任务

    @Scheduled注解为定时任务,cron表达式里写执行的时机

    package com.mvc.task.impl;
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.concurrent.TimeUnit;
    import org.joda.time.DateTime;
    import org.springframework.scheduling.annotation.Scheduled;
    import org.springframework.stereotype.Component;
    import com.mvc.task.IATask;
    @Component
    public class ATask implements IATask{
           @Scheduled(cron="0/10 * *  * * ? ")   //每10秒执行一次    
           @Override    
           public void aTask(){    
                try {
                    TimeUnit.SECONDS.sleep(20);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
                System.out.println(sdf.format(DateTime.now().toDate())+"*********A任务每10秒执行一次进入测试");    
           }    
    }  
    package com.mvc.task.impl;
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import org.joda.time.DateTime;
    import org.springframework.scheduling.annotation.Scheduled;
    import org.springframework.stereotype.Component;
    import com.mvc.task.IBTask;
    @Component
    public class BTask implements IBTask{
    	   @Scheduled(cron="0/5 * *  * * ? ")   //每5秒执行一次    
    	   @Override 
    	   public void bTask(){   
    		     DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
    	         System.out.println(sdf.format(DateTime.now().toDate())+"*********B任务每5秒执行一次进入测试");    
    	   }    
    }

    spring的定时任务默认是单线程多个任务执行起来时间会有问题(B任务会因为A任务执行起来需要20S而被延后20S执行),如下图所示:



    当我们配置了线程池后再来看结果(多线程下,B任务再也不会因为A任务执行起来要20S而被延后了):

    cron表达式详解:    

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

           按顺序依次为
          1  秒(0~59)
          2  分钟(0~59)
          3 小时(0~23)
          4  天(0~31)
          5 月(0~11)
          6  星期(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”前有具体的内容,它就具有其他的含义了。例如:“6L”表示这个月的倒数第6天
           注意:在使用“L”参数时,不要指定列表或范围,因为这会导致问题
           W 字符代表着平日(Mon-Fri),并且仅能用于日域中。它用来指定离指定日的最近的一个平日。大部分的商业处理都是基于工作周的,所以 W 字符可能是非常重要的。
           例如,日域中的 15W 意味着 "离该月15号的最近一个平日。" 假如15号是星期六,那么 trigger 会在14号(星期五)触发,因为星期四比星期一离15号更近。
           C:代表“Calendar”的意思。它的意思是计划所关联的日期,如果日期没有被关联,则相当于日历中所有日期。例如5C在日期字段中就相当于日历5日以后的第一天。1C在星期字段中相当于星期日后的第一天。
           字段   允许值   允许的特殊字符
           秒           0-59           , - * /
           分           0-59           , - * /
           小时           0-23           , - * /
           日期           1-31           , - * ? / L W C
           月份           1-12 或者 JAN-DEC           , - * /
           星期           1-7 或者 SUN-SAT           , - * ? / L C #
           年(可选)           留空, 1970-2099           , - * /

    展开全文
  • @Scheduled

    2020-08-03 16:13:32
    每隔5秒执行一次: @Scheduled(cron = "*/5 * * * * ?") 每隔1分钟执行一次: @Scheduled(cron = "0 */1 * * * ?") 每天23点执行一次: @Scheduled(cron = "0 0 23 * * ?") 每天凌晨1点执行一次: @Scheduled(cron =...
    
    
    每隔5秒执行一次:            @Scheduled(cron = "*/5 * * * * ?")
    每隔1分钟执行一次:           @Scheduled(cron = "0 */1 * * * ?")
    每天23点执行一次:           @Scheduled(cron = "0 0 23 * * ?")
    每天凌晨1点执行一次:          @Scheduled(cron = "0 0 1 * * ?")
    每月1号凌晨1点执行一次:      @Scheduled(cron = "0 0 1 1 * ?")
    每月最后一天23点执行一次:     @Scheduled(cron = "0 0 23 L * ?")
    每周星期天凌晨1点实行一次:     @Scheduled(cron = "0 0 1 ? * L")26分、29分、33分执行一次:     @Scheduled(cron = " 0 26,29,33 * * * ?")
    每天的0点、13点、18点、21点都执行一次:  @Scheduled(cron = " 0 0 0,13,18,21 * * ?")
    
       
    
    展开全文
  • SpringBoot Scheduled

    2018-01-24 15:07:08
    在Spring Boot中编写定时任务是非常简单的事,直接使用Scheduled注解就可以完成复杂的定时任务设置.下面是一个10分钟执行定时任务的示例: @Scheduled(cron = "0 0/10 * * * ?") private void schedulerEmptyMsg() ...

    在Spring Boot中编写定时任务是非常简单的事,直接使用Scheduled注解就可以完成复杂的定时任务设置.下面是一个10分钟执行定时任务的示例:

    @Scheduled(cron = "0 0/10 * * * ?")
    private void schedulerEmptyMsg() {
        LogUtils.info("定时任务执行:" + System.currentTimeMillis());
    }

    上面的示例中使用了cron表达式,springboot的定时任务还支持其他方式进行定时周期设置:

    @Scheduled(fixedDelay = 5000)//fixedDelay = 5000表示当前方法执行完毕5000ms后,Spring scheduling会再次调用该方法 
    public void testFixDelay() { 
    } 
    
    @Scheduled(fixedRate = 5000)//fixedRate = 5000表示当前方法开始执行5000ms后,Spring scheduling会再次调用该方法 
    public void testFixedRate() { 
    } 
    
    @Scheduled(initialDelay = 1000, fixedRate = 5000)//initialDelay = 1000表示延迟1000ms执行第一次任务 
    public void testInitialDelay() { 
    } 

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

    Cron表达式:
    Cron表达式生成器
    Cron表达式是一个字符串,是由空格隔开的6或7个域组成,每一个域对应一个含义(秒 分 时 每月第几天 月 星期 年)其中年是可选字段。

    从左到右分别代表: 秒 分 时 日 月 星期 年份

    字段允许值允许的字符
    0-59, - * /(0-59的整数)
    0-59, - * /(0-59的整数)
    小时0-23, - * /(0-23的整数)
    日期1-31, - * ? / L W C(0-31的整数)
    月份1-12 or JAN-DEC, - * /(1-12的整数或JAN-DEc)
    星期1-7 or SUN-SAT, - * ? / L C #(1-7的整数或SUN-SAT两个范围。1表示星期天,2表示星期一)
    1970-2099, - * /

    “ * ” 表示所有值 在秒的位置写“ * ”表示每秒
    “ ? ” 用来指定“非明确的值”
    “-” 表示至,例如日期中“2-5”,指的是2号、3号、4号、5号
    “,” 表示和,例如日期中“2,5”,指的是2号和5号
    “/” 表示增量,例如上面实现代码中的“0/10”,指的是每隔10秒
    “,” 表示列出枚举值。例如:在分域使用5,20,则意味着在5和20分时触发一次。
    “L” 表示最后,只能出现在星期和每月第几天域,如果在星期域使用1L,意味着在最后的一个星期日触发。
    “W” 表示有效工作日(周一到周五),只能出现在每月第几日域,系统将在离指定日期的最近的有效工作日触发事件。注意一点,W的最近寻找不会跨过月份
    “LW” 这两个字符可以连用,表示在某个月最后一个工作日,即最后一个星期五。
    “#” 用于确定每个月第几个星期几,只能出现在每月第几天域。例如在1#3,表示某月的第三个星期日。

    "0 0 * * * *" = 每天的每小时开始时
    "*/10 * * * * *" = 每10分钟
    "0 0 8-10 * * *" = 每天的8, 9 和 10 点
    "0 0 6,19 * * *" = 每天的早上6点和下午7点
    "0 0/30 8-10 * * *" = 每天的8:00, 8:30, 9:00, 9:30, 10:00 和 10:30,即8-10点,每半小时一次
    "0 0 9-17 * * MON-FRI" = 每周一至周五,9点到17点的0分0秒执行
    "0 0 0 25 12 ?" = 每年圣诞节(12月25日)0时0分0秒执行
    展开全文
  • cloud_scheduled-源码

    2021-02-09 10:32:31
    cloud_scheduled
  • 浅谈Scheduled

    万次阅读 2020-05-09 15:21:16
    @Scheduled(cron = "0 0 0 * * ?") 依次为:秒、分、时、日、月、周、年(可选) 秒(0~59) 分钟(0~59) 小时(0~23) 日(0~31) 月(0~11) 星期(1~7 1为SUN-依次为SUN,MON,TUE,WED,THU,FRI,SAT) “*...
  • @Scheduled规则

    2021-09-16 16:25:35
    spring boot: 计划任务@ EnableScheduling和@Scheduled @Scheduled中的参数说明 @Scheduled(fixedRate=2000):上一次开始执行时间点后2秒再次执行; @Scheduled(fixedDelay=2000):上一次执行完毕时间点后2秒...
  • Scheduled定时任务

    千次阅读 2019-04-10 13:12:07
    在启动类中添加@EnableScheduling ...@Scheduled(fixedDelay = 1000) //当前任务执行结束1秒后开启另一个任务 @Scheduled(fixedRate = 1000) //当前任务开始执行1秒后开启另一个定时任务 @Scheduled(initialDelay = ...
  • 主要介绍了spring-boot通过@Scheduled配置定时任务,文中还给大家介绍了springboot 定时任务@Scheduled注解的方法,需要的朋友可以参考下
  • Scheduled定时计划

    千次阅读 2018-06-12 15:57:49
    SpringBoot集成了@Scheduled的相关依赖(org.springframework.scheduling.annotation.Scheduled);我们只需要直接使用即可。 @Scheduled注解的使用步骤: 第一步:在启动类上面启用定时任务 第二步:在要定时执行...
  • 目录Scheduled Scheduled 注释 @io.quarkus.scheduler.Scheduled
  • spring的定时任务@Scheduled简单实用

    万次阅读 多人点赞 2019-05-05 23:05:41
    方式一:使用注解 @Component @EnableScheduling//可以在启动类上注解也可以在当前文件 ... @Scheduled(cron = "0/10 * * * * ?") public void runfirst(){ System.out.println("********first job is ...
  • 使用spring @Scheduled注解执行定时任务、

    万次阅读 多人点赞 2012-07-14 09:31:34
    以前框架使用quartz框架执行定时调度问题、老大说这配置太麻烦、每个调度都需要多加在spring的配置中、能不能减少配置的量从而提高开发效率、最近看了看spring的 scheduled的使用注解的方式进行调度、感觉很方便、...
  • Scheduled注解

    2018-04-24 17:46:39
    Springboot的默认定时任务——Scheduled注解1.pom依赖:引入springboot starter包即可&lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/...
  • spring boot Scheduled使用

    2019-02-28 16:18:49
    spring boot: 计划任务@ EnableScheduling和@Scheduled spring boot: 计划任务@ EnableScheduling和@Scheduled @Scheduled中的参数说明 1 2 3 4 5 6 7 @Scheduled...
  • @Scheduled定时任务不执行

    万次阅读 2021-08-26 13:57:44
    @Scheduled(fixedRate = 1050 * 60) public void drefresh(){ System.out.println("执行refresh:"+ DateUtils.getTime()); List<String> list = new ArrayList<>(); } 解决方法: 第一种: 在类...
  • Scheduled小问题

    2020-10-30 08:40:54
    *@Scheduled注解* 定时任务时间累加不会超过当前位的阈值 For example: @Scheduled(cron=“0/9 * * * * ?”) 会在9、18、27、36、45、54、60执行 @Scheduled(cron=“0/35 * * * * ?”) 会在35、60执行
  • @Scheduled 定时器

    2020-03-26 11:48:24
    @Scheduled 定时任务总结 @Scheduled 作用:spring定时器(定时执行一次或定时轮询执行一段代码) 使用场景:注解在方法上 参数说明:常用参数 一、@Scheduled 参数说明 1、Long fixedDelay:定时任务每隔多久...
  • Scheduled和quartz

    2021-04-20 10:52:03
    Scheduled  只适合处理简单的计划任务,不能处理分布式计划任务。优势:是spring框架提供的计划任务,开发简单,执行效率比较高。且在计划任务数量太多的时候,可能出现阻塞,崩溃,延迟启动等问题。  Scheduled...
  • 在要实现定时器任务的方法上面加上@Scheduled()注解,fixedRate参数是配置多少时间执行一次任务单位是ms(毫秒)这样项目一启动你的定时任务也会跟着开始 拓展 注意@Scheduled注解的cron属性 cron表达式详解 cron...
  • @Scheduled不执行的原因

    万次阅读 多人点赞 2016-10-18 16:17:04
    1. 今天用@Schedule做了一个定时任务,希望凌晨1点执行,代码如下@... @Scheduled(cron = "0 0 1 * * ?") public void parseMongodbDataToJson() { } } 第二天来公司了,发现根本没有执行。然后开始查找问题 2. 首先
  • 主要介绍了spring 定时任务@Scheduled的相关资料,文中通过示例代码介绍的很详细,相信对大家的理解和学习具有一定的参考借鉴价值,有需要的朋友们下面来一起看看吧。
  • springboot + scheduled

    2020-11-19 21:20:24
    package com.scheduled; import org.springframework.context.annotation.Configuration;...import org.springframework.scheduling.annotation.Scheduled; @EnableScheduling @Configuration public class
  • @Scheduled用法

    2021-07-03 17:23:41
    1.注解在方法顶部 2.需要在类上加注解@EnableScheduling 3.主要是定时做一些事情,定时的时间控制在注解后面的括号中 ...public class ScheduledTask { @Scheduled(fixedDelay = 5000) public void reportName(){
  • laravel在heroku上计划的工作 Heroku上的Laravel Scheduled Jobs的代码示例
  • spring @Scheduled定时任务代码

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 64,070
精华内容 25,628
关键字:

scheduled