写段代码理解 scheduleAtFixedRate和scheduleWithFixedDelay
① 如果任务在周期内正常结束掉的话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相关推荐
- 老司机写的java代码_菜鸟 or 老司机?写段代码看看吧
有的小伙伴可能用Python写代码已经非常久了,可能觉得已经是个高手了,那么看看下面这个简单的实现需求,你会写怎样的Python代码呢?通过你写的代码,应该可以大约评估下你到底是菜鸟还是一个老司机了, ...
- 彻底理解scheduleAtFixedRate 与 scheduleWithFixedDelay
scheduleAtFixedRate 以上一个任务***开始的时间***计时,period时间过去后,检测上一个任务是否执行完毕,如果上一个任务执行完毕,则当前任务立即执行,如果上一个任务没有执行完 ...
- synchronized(互斥线程,类线程和对象线程),一段代码理解
下面直接运行即可. package com.controller;/*** Created by** @author : zj* @date : 2018-08-20*/public class Te ...
- 当程序员说“这代码写的可真烂”,他们的意思是“这烂代码不是我写的”。而当他们说这段代码有些“小问题”时,很可能这代码是他们自己写的...
英文原文:What Programmers Say vs. What They Mean 你是否听到过同事说"这段代码不言自明"?你的同事的这句话的实际意思是这段代码不需要写注释. ...
- python如何注释一段代码_Python 中如何写注释
在写 Python 代码的时候,一个很好的编码实践就是使得你的代码简洁,易懂.组织代码,设置变量,以及给函数有意义的名字,都是几个不错的方法. 另外一个提高代码可读性的方式就是使用注释.一个注释就是可 ...
- 写出一段代码将链表中的两个节点位置互换位置_干货||链表的技巧和算法总结...
链表的操作总结 链表反转 这是一个简单的链表操作问题,在leetcode上面有52.7%的通过率,难度是简单.但是还是想在这里基于python做一下总结,顺便总结一下链表的各种操作. 首先先看一下 ...
- 假设写一段代码引导PC开机这段代码是 ? Here is a tiny quot;OSquot; :-D
Hello world -- OS 我找到了华科绍志远博士的相关代码,发现他依据MIT的JOS的boot.S 稍作改动.然后单独剥离出来,能够非常好玩~ 资料下载地址: http://download ...
- 程序员写了段代码,自称完美! 网友: 我现在还在改你的Bug
现在的互联网技术在飞速进步着,加之有一些程序员确实是喜欢编程,长久如此,很多程序员的技术也得到了一个质的飞跃,于是都想写出一个堪称没有Bug的代码! 这不,近日又有一位程序员发帖称: 可以看到,这是一 ...
- 调用布尔变量java_关于java的参数的调用,还有布尔的理解,这有一段代码,我有些不太理解,希望能够帮我分析下,谢谢...
第一段代码 public class CustomerBiz { String[] names=new String[30]; //创建学生姓名数组 //实现姓名的添加 public void add ...
最新文章
- 3D CNN框架结构各层计算
- Java生鲜电商平台-缓存架构实战
- CSS--居中方式总结
- 软件开发的“三重门”
- jQuery选择id属性带有.点符号元素的方法
- 荣耀鸿蒙os2.0公测版,鸿蒙OS 2.0他来了!华为HarmonyOS 2.0开发者公测版正式推送
- oracle 转成sql server,怎样把Oracle查询转换为SQL Server
- java 多线程 int_java多线程问题
- java文件对比工具
- 金蝶kis商贸采购单商品代码_金蝶KIS商贸版操作明细
- android自动适应横屏,Android屏幕适配(一)--自定义View屏幕适配
- 如何从零开始搭建SRE?
- Win11 PE下如何快速设置IP如何新建共享文件夹并设置为everyone完全控制权限
- 2020-12-01
- PCB 铜厚厚度和线宽的选择
- Pytorch版本代码修正
- 免费阅读里的“B站”,后浪已乘“疯”
- 【软考网络管理员】2023年软考网管初级常见知识考点(1)- 计算机硬件基础
- InnoSetup教程
- 研报复现初探—华泰金工人工智能选股系列之boosting模型