① 如果任务在周期内正常结束掉的话scheduleAtFixedRate和scheduleWithFixedDelay没有差别

public void start() {ScheduledExecutorService pool = Executors.newScheduledThreadPool(1);System.out.println("this task startTime ");pool.scheduleAtFixedRate(new Runnable() {@Overridepublic void run() {System.out.println("this task id = " + (number+1));number++;}}, 0,3000, TimeUnit.MILLISECONDS);}


scheduleWithFixedDelay 如下图

② 如果任务在周期内没有正常结束掉的话scheduleAtFixedRate会努力追赶原本的计划(已经晚了我得跑快点), scheduleWithFixedDelay则会摆烂不会追赶原本的计划(反正都晚了,就这样吧,爱咋咋地)

  public void start() {ScheduledExecutorService pool = Executors.newScheduledThreadPool(1);System.out.println("this task startTime ");pool.scheduleAtFixedRate(new Runnable() {@Overridepublic void run() {try {System.out.println("this task id = " + (number+1));if (number <= 3) {Thread.sleep(8000);}number++;} catch (Exception e) {}}}, 0,3000, TimeUnit.MILLISECONDS);}

这里我们主动设置了前3个任务都超时8s, 之后的任务恢复正常,我们看下面的日志

我们看到这个输出有点怪异,为啥在05s的时候一下子执行了那么多次任务呢?
注意看如果任务不超时, 40:33 按照预期 执行第12个任务的时间应该是 41:06 , 正好会和日志对的上,这下子就能理解了,它是在追赶原本的预期节奏,哪怕是一秒钟也会发很多请求。

我们换成scheduleWithFixedDelay再试试


才不管原来的节奏呢,慢了就慢了,我就按照慢着的节奏走。

写段代码理解 scheduleAtFixedRate和scheduleWithFixedDelay相关推荐

  1. 老司机写的java代码_菜鸟 or 老司机?写段代码看看吧

    有的小伙伴可能用Python写代码已经非常久了,可能觉得已经是个高手了,那么看看下面这个简单的实现需求,你会写怎样的Python代码呢?通过你写的代码,应该可以大约评估下你到底是菜鸟还是一个老司机了, ...

  2. 彻底理解scheduleAtFixedRate 与 scheduleWithFixedDelay

    scheduleAtFixedRate 以上一个任务***开始的时间***计时,period时间过去后,检测上一个任务是否执行完毕,如果上一个任务执行完毕,则当前任务立即执行,如果上一个任务没有执行完 ...

  3. synchronized(互斥线程,类线程和对象线程),一段代码理解

    下面直接运行即可. package com.controller;/*** Created by** @author : zj* @date : 2018-08-20*/public class Te ...

  4. 当程序员说“这代码写的可真烂”,他们的意思是“这烂代码不是我写的”。而当他们说这段代码有些“小问题”时,很可能这代码是他们自己写的...

    英文原文:What Programmers Say vs. What They Mean 你是否听到过同事说"这段代码不言自明"?你的同事的这句话的实际意思是这段代码不需要写注释. ...

  5. python如何注释一段代码_Python 中如何写注释

    在写 Python 代码的时候,一个很好的编码实践就是使得你的代码简洁,易懂.组织代码,设置变量,以及给函数有意义的名字,都是几个不错的方法. 另外一个提高代码可读性的方式就是使用注释.一个注释就是可 ...

  6. 写出一段代码将链表中的两个节点位置互换位置_干货||链表的技巧和算法总结...

    链表的操作总结   链表反转 这是一个简单的链表操作问题,在leetcode上面有52.7%的通过率,难度是简单.但是还是想在这里基于python做一下总结,顺便总结一下链表的各种操作. 首先先看一下 ...

  7. 假设写一段代码引导PC开机这段代码是 ? Here is a tiny quot;OSquot; :-D

    Hello world -- OS 我找到了华科绍志远博士的相关代码,发现他依据MIT的JOS的boot.S 稍作改动.然后单独剥离出来,能够非常好玩~ 资料下载地址: http://download ...

  8. 程序员写了段代码,自称完美! 网友: 我现在还在改你的Bug

    现在的互联网技术在飞速进步着,加之有一些程序员确实是喜欢编程,长久如此,很多程序员的技术也得到了一个质的飞跃,于是都想写出一个堪称没有Bug的代码! 这不,近日又有一位程序员发帖称: 可以看到,这是一 ...

  9. 调用布尔变量java_关于java的参数的调用,还有布尔的理解,这有一段代码,我有些不太理解,希望能够帮我分析下,谢谢...

    第一段代码 public class CustomerBiz { String[] names=new String[30]; //创建学生姓名数组 //实现姓名的添加 public void add ...

最新文章

  1. 3D CNN框架结构各层计算
  2. Java生鲜电商平台-缓存架构实战
  3. CSS--居中方式总结
  4. 软件开发的“三重门”
  5. jQuery选择id属性带有.点符号元素的方法
  6. 荣耀鸿蒙os2.0公测版,鸿蒙OS 2.0他来了!华为HarmonyOS 2.0开发者公测版正式推送
  7. oracle 转成sql server,怎样把Oracle查询转换为SQL Server
  8. java 多线程 int_java多线程问题
  9. java文件对比工具
  10. 金蝶kis商贸采购单商品代码_金蝶KIS商贸版操作明细
  11. android自动适应横屏,Android屏幕适配(一)--自定义View屏幕适配
  12. 如何从零开始搭建SRE?
  13. Win11 PE下如何快速设置IP如何新建共享文件夹并设置为everyone完全控制权限
  14. 2020-12-01
  15. PCB 铜厚厚度和线宽的选择
  16. Pytorch版本代码修正
  17. 免费阅读里的“B站”,后浪已乘“疯”
  18. 【软考网络管理员】2023年软考网管初级常见知识考点(1)- 计算机硬件基础
  19. InnoSetup教程
  20. 研报复现初探—华泰金工人工智能选股系列之boosting模型

热门文章

  1. 麦当劳中国再生塑料变身新餐盘;VEDETT罐装白熊玫瑰红啤酒全新上市 | 知消
  2. 扫描枪设置虚拟串口linux,顶码扫描枪全能王TP20Y怎么设置USB虚拟串口模式?
  3. Java学习之垃圾回收
  4. iPhone3GS,iPhone4完美降级
  5. linux7.0 桌面教程,红旗桌面7.0的网络连接图解教程
  6. 字符串缓冲区StringBuffer类,正则表达式
  7. DLL的远程注入与远程卸载卸载
  8. 黑客-抓取数据包,并破解加密密码
  9. 口腔解剖生理学超详细重点
  10. 公司公告的分类以及送股、转增股和配股的区别