官方文档

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

最新文章

  1. 【Java EE 学习 48】【Hibernate学习第五天】【抓取策略】【二级缓存】【HQL】
  2. Shiro安全登录框架
  3. JavaScript变量作用域
  4. AJAX中UPDATEPANEL配合TIMER控件实现局部无刷新
  5. bzoj4547 小奇的集合
  6. nexus 2.6需要jdk7才能跑起来
  7. jQuery序列化后的表单值转换成Json
  8. 利用map可以对很大的数出现的次数进行记数
  9. Mac中编译安装Qt 4.4
  10. C++ 引用(&)
  11. @property 的本质是什么?ivar、getter、setter 是如何生成并添加到这个类中的
  12. 梳理一下uboot是如何从nandflash挂载文件系统的
  13. call_compile.sql
  14. java 判断null和空
  15. CH2906 武士风度的牛(算竞进阶习题)
  16. indexOf() 使用方法(数组去重)
  17. hibernate中调用query.list()而出现的黄色警告线
  18. 处理后台向前台传递的json数据
  19. linux下 C程序 参数和内存
  20. 【LGP4886 】快递员

热门文章

  1. 20180610模拟赛T3——书本整理
  2. 使用Git管理品优购项目 开始部分
  3. V2X:
  4. 6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(Wi-Fi模块SSL连接MQTT)
  5. Python中字符串匹配函数startswith()函数
  6. HTML5 - websocket的应用 之 简易聊天室
  7. 每日一问:你了解 Java 虚拟机结构么?
  8. 紧随时代的步伐--Java8之Lambda表达式的使用
  9. php form表单ajax上传图片方法
  10. putty常用配置修改