zoukankan      html  css  js  c++  java
  • Scheduling Tasks

    官方文档

    https://spring.io/guides/gs/scheduling-tasks/

    官方文档详细介绍了@Scheduled中fixedRate,fixedDelay,cron的用法

    fixedRate代表调用频率,单位为ms,如果调用频率设为5000ms,那么当你第一次调用占用2秒时等待3秒会第二次调用,当你第二次调用占用5秒时结束会立马第三次调用。

    fixedDelay代表间隔时间,单位为ms,即每次调用完成时间和下次调用都相隔5000ms。

    cron表达式,看官网文档

    fixedDelay验证

    情况一,程序执行时间小于延迟时间

    设置延迟5秒时,执行时间为3秒

        @Scheduled(fixedDelay=5000)
        public void execute() throws InterruptedException {
                System.out.println("调用时间"+CommonTool.getNowDateStr());
                Thread.sleep(3000);
        }

    发现两次开始调用时间为8秒刚好为执行时间+等待时间

    情况二,程序执行时间大于延迟时间

    设置延迟5秒,并且方法调用时间为6秒时

        @Scheduled(fixedDelay=5000)
        public void execute() throws InterruptedException {
                System.out.println("调用时间"+CommonTool.getNowDateStr());
                Thread.sleep(6000);
        }

    发现间隙为11,也为执行时间+等待时间

    fixedRate验证

    情况一,程序执行时间小于延迟时间

    设置延迟5秒时,执行时间为3秒

    发现间隔时间即为5秒 

    情况二,程序执行时间大于延迟时间

    设置延迟5秒,并且方法调用时间为6秒时

    发现调用间隔为6秒,由此可见是单线程运行。

    定时任务立即执行

    @Scheduled(cron="* * * * * *")
            Thread.sleep(24*3600*1000);

    多个定时器同一时间触发只有一个执行

    schedule是单线程的,阻塞的,所以千万不要长时间睡眠,会影响队列里其他schedule的执行。如果想多个schedule同时进行可以在xm里面配置线程池

  • 相关阅读:
    平衡树之splay BZOJ3224 普通平衡树
    线段树 洛谷P1531 I Hate It
    倍增LCA code[vs]1036商务旅行
    线段树 hdu1698 Just a Hook
    猥琐的暴搜 NOIP2011 Mayan游戏
    [BZOJ2301][HAOI2011]Problem b
    [BZOJ1101][POI2007]Zap
    [BZOJ1100][POI2007]对称轴osi
    [BZOJ3167][Heoi2013]Sao
    [BZOJ3039]玉蟾宫
  • 原文地址:https://www.cnblogs.com/aeolian/p/11731057.html
Copyright © 2011-2022 走看看