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里面配置线程池

  • 相关阅读:
    Swift入门篇-Hello World
    Swift入门篇-swift简介
    Minecraft 插件 world edit 的cs 命令
    搭建本地MAVEN NEXUS 服务
    MC java 远程调试 plugin 开发
    企业内部从零开始安装docker hadoop 提纲
    javascript 命令方式 测试例子
    ca des key crt scr
    JSF 抽象和实现例子 (函数和属性)
    form 上传 html 代码
  • 原文地址:https://www.cnblogs.com/aeolian/p/11731057.html
Copyright © 2011-2022 走看看