我们通过运行代码来查看两者之间的区别:

1、首先创建一个需要执行5秒的任务:

// 执行这个任务需要5秒
Runnable runnable = new Runnable() {public void run() {int i = 5;while (i != 0) {try {Thread.sleep(1000);System.out.println(i);i--;} catch (InterruptedException e) {e.printStackTrace();}}System.out.println("runnable");}
};

2、创建ScheduledExecutorService:

ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);

3、查看scheduleAtFixedRate的效果,设置初始不延时,之后每隔1秒执行一次:

scheduler.scheduleAtFixedRate(runnable, 0, 1, TimeUnit.SECONDS);

4、查看效果,由于定时器要求每隔1秒执行一次任务,而执行一次任务的时间需要5秒,故执行效果相当于每隔5秒执行一次任务


5、查看scheduleWithFixedDelay的效果,设置初始不延时,之后延时1秒执行一次:

scheduler.scheduleWithFixedDelay(runnable, 0, 1, TimeUnit.SECONDS);

6、查看效果,由于定时器要求每次任务执行完成之后延时1秒再执行,而执行一次任务的时间需要5秒,即5秒执行完之后,再延时1秒,故执行效果相当于每隔6秒执行一次任务




JAVA定时器ScheduledExecutorService中,scheduleAtFixedRate和scheduleWithFixedDelay的区别相关推荐

  1. ScheduledExecutorService中scheduleAtFixedRate方法与scheduleWithFixedDelay方法的区别

    ScheduledExecutorService中scheduleAtFixedRate方法与scheduleWithFixedDelay方法的区别 ScheduledThreadPoolExecut ...

  2. java定时器任务中获取request对象 @Scheduled 获取request 对象 quartz中获取request对象

    java定时器任务中获取request对象 @Scheduled 获取request 对象 quartz中获取request对象 一.问题描述 1.在java定时任务中,使用 @Scheduled 注 ...

  3. 【Java】泛型中 extends 和 super 的区别?

    <? extends T>和<? super T>是Java泛型中的"通配符(Wildcards)"和"边界(Bounds)"的概念. ...

  4. 【java】深入理解Java JVM虚拟机中init和clinit的区别

    1.概述 转载并且补充:深入理解Java JVM虚拟机中init和clinit的区别 原创 之所以来转载一下,是因为,有个学弟问了这个问题 这个知识点,回顾起来应该是我看 深入理解Java JVM虚拟 ...

  5. 20200927:Java和Cpp中栈与队列的区别

    Java和Cpp中栈与队列的区别 题目 思路与算法 代码实现 对比分析两种语言中栈和队列的区别 题目 1.225. 用队列实现栈 2.232. 用栈实现队列 3.155. 最小栈 思路与算法 三道简单 ...

  6. Java定时线程实现:scheduleAtFixedRate 和 scheduleWithFixedDelay 的差别

    Java实现定时任务,一般都是用一个线程,设置个时间,让他定时执行,注意力一般都是集中在这个线程的实现,很少考虑到具体定时执行线程的这个过程.scheduleAtFixedRate 和 schedul ...

  7. Java for 循环中++i和i++的区别

    语法 for (语句1; 语句2; 语句3) { 被执行的代码块 } 语句 1 在循环(代码块)开始前执行 语句 2 定义运行循环(代码块)的条件 语句 3 在循环(代码块)已被执行之后执行(这就是循 ...

  8. scheduleAtFixedRate 与 scheduleWithFixedDelay 的区别

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

  9. scheduleAtFixedRate 与 scheduleWithFixedDelay 的区别和实例

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

最新文章

  1. R语言ggplot2可视化自定义图例(legend)方框(box):所有图例没有方框、每个图例分别在不同的方框中、多个图例放置在同一个方框中
  2. python函数定义中参数列表里的参数是_详解Python函数中参数带星号是什么意思
  3. oracle包写入程序失败_ORA-12571 : TNS : 包写入程序失败
  4. 如何清除服务器物理内存,服务器怎样清理物理内存
  5. 数字图像处理与Python实现笔记
  6. ssh 连接_Docker实战——使用SSH连接docker容器
  7. iOS点击获取短信验证码按钮
  8. 基于JAVA+SpringMVC+Mybatis+MYSQL的相声购票系统
  9. 禁止更改计算机名_PiNetwork如何更改名字教程
  10. Swift - 设置应用程序图标的提醒个数(右上角小红圈)
  11. ToStringBuilder使用
  12. Dreamweaver实战技能从入门到精通-李炎恢-专题视频课程
  13. flink 时间语义、水位线(Watermark)、生成水位线、水位线的传递
  14. java 读文件时,readline的问题
  15. 基于html评定奖学金页面代码,学校助学奖学金申请表页面模板
  16. ThingJS 3D场景层级切换,体验不一样的动感!
  17. hashmap面试题,音视频学习指南来咯,社招面试心得
  18. cesium学习 之 Entity 画卫星轨道 (一)
  19. 《计算机网络与因特网》复习纲要
  20. 微型计算机是计算器吗,计算器和计算机的区别?

热门文章

  1. 潘石屹回应丁磊“5G言论”:生活在4G的人理解不了5G
  2. 拳王虚拟项目公社:自动化的虚拟资源产品,唱歌教程赚地盆满钵满
  3. 拳王虚拟项目公社:说一个合法正规兼职创业,副业虚拟资源项目
  4. 转:Redis使用认证密码登录
  5. 斐波那契数列的非递归实现
  6. Java成神之路——CountDownLatch、CyclicBarrier
  7. 组态软件运行在云服务器_能在云服务器上运行软件吗
  8. 用python效率办公_如何用Python提高办公(Excel)效率?
  9. vscode remote 第三方库_分钟将vscode撸成小霸王
  10. nodejs实践录:我的nodejs编码风格