import java.util.Timer;
import java.util.TimerTask;
import java.util.Date;/*** @author vincent*/
public class TimerTest {public static void main(String[] args) {Timer t = new Timer();//在5秒之后执行TimerTask的任务t.schedule(new TimerTask(){public void run(){System.out.println("this is task you do1");}},5*1000);//在Date指定的特定时刻之后执行TimerTask的任务Date d1 = new Date(System.currentTimeMillis()+1000);t.schedule(new TimerTask(){public void run(){System.out.println("this is task you do2");}},d1);//在Date指定的特定时刻之后,每隔1秒执行TimerTask的任务一次Date d2 = new Date(System.currentTimeMillis()+1000);t.schedule(new TimerTask(){public void run(){System.out.println("this is task you do3");}},d2,1*1000);//在3秒之后,每隔1秒执行TimerTask的任务一次t.schedule(new TimerTask(){public void run(){System.out.println("this is task you do4");}},3*1000,1*1000);//在3秒之后,绝对每隔2秒执行TimerTask的任务一次
t.scheduleAtFixedRate(new TimerTask(){public void run(){System.out.println("this is task you do6");}},3*1000,2*1000);}schedule和scheduleAtFixedRate的区别在于,如果指定开始执行的时间在当前系统运行时间之前,scheduleAtFixedRate会把已经过去的时间也作为周期执行,而schedule不会把过去的时间算上。比如SimpleDateFormat fTime = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");Date d1 = fTime.parse("2005/12/30 14:10:00");t.scheduleAtFixedRate(new TimerTask(){public void run(){System.out.println("this is task you do6");}},d1,3*60*1000);间隔时间是3分钟,指定开始时间是2005/12/30 14:10:00,如果我在14:17:00分执行这个程序,那么会立刻打印3次this is task you do6     //14:10
this is task you do6     //14:13
this is task you do6     //14:16

并且注意,下一次执行是在14:19 而不是 14:20。就是说是从指定的开始时间开始计时,而不是从执行时间开始计时。但是上面如果用schedule方法,间隔时间是3分钟,指定开始时间是2005/12/30 14:10:00,那么在14:17:00分执行这个程序,则立即执行程序一次。并且下一次的执行时间是 14:20,而不是从14:10开始算的周期(14:19)。}

转载于:https://www.cnblogs.com/Tammie/archive/2012/08/15/2640059.html

schedule和scheduleAtFixedRate相关推荐

  1. Timer的schedule和scheduleAtFixedRate方法的区别解析

    在java中,Timer类主要用于 定时性.周期性任务的触发,这个类中有两个方法比较难理解,那就是schedule和scheduleAtFixedRate方法,在这里就用实例分析一下 (1)sched ...

  2. schedule() 和 scheduleAtFixedRate() 的区别--转载

    1.  schedule() ,2个参数方法: 在执行任务时,如果指定的计划执行时间scheduledExecutionTime <= systemCurrentTime,则task会被立即执行 ...

  3. java中timer类包_Java~util包中Timer的使用, 演示cancel方法 和 对比schedule和scheduleAtFixedRate方法...

    Timer Timer类的主要作用就是设置计划任务,但封装任务的类却是TimerTask类 执行计划任务的代码要放人TimerTask的子类中,因为TimerTask是一个抽象类.而且要重写其run方 ...

  4. Timer的schedule和scheduleAtFixedRate方法的区别解析(转)

    在java中,Timer类主要用于定时性.周期性任务 的触发,这个类中有两个方法比较难理解,那就是schedule和scheduleAtFixedRate方法,在这里就用实例分析一下 (1)sched ...

  5. Java定时任务之--schedule与scheduleAtFixedRate异同

    相同点: 任务执行未超时,下次执行时间 = 上次执行开始时间 + period:任务执行超时,下次执行时间 = 上次执行结束时间:在任务执行未超时时,它们都是上次执行时间加上间隔时间,来执行下一次任务 ...

  6. schedule与scheduleAtFixedRate比较

    schedule与scheduleAtFixedRate: 不延时: schedule(TimerTask, Date runDate, long period)方法任务不延时----Date类型 1 ...

  7. Timer的schedule和scheduleAtFixedRate区别

    Timer的schedule和scheduleAtFixedRate个人理解. schedule的下次开始时间是根据结束时间来看的,你设置一个间隔2秒的任务,但是每个任务需要执行的时间需要5秒,他会判 ...

  8. schedule vs scheduleAtFixedRate

    最好的方法是在两者之间区分 timer灵感时间设定过去时间T,scheduleAtFixedRate将从T现在所有的任务中运行,schedule而该任务将只运行从现在开始计时. public clas ...

  9. Java定时任务schedule和scheduleAtFixedRate的异同

    一.使用 相同点 任务执行未超时,则下次执行时间 = 上次执行开始时间 + period任务执行超时,则下次执行时间 = 上次执行结束时间 不同点 schedule在错过以后会按照自己的节奏继续走,可 ...

  10. Java并发编程—schedule方法和scheduleAtFixedRate方法的区别

    原文作者:一叶丿清风 原文地址:schedule方法和scheduleAtFixedRate方法的区别 schedule方法和scheduleAtFixedRate方法都可以实现任务的延时和不延时执行 ...

最新文章

  1. js中 let var const 的差异和使用场景
  2. 【图像处理】图像内插“最近邻插值 最近邻内插法(Nearest Neighbour Interpolate)”代码演示(调整图像大小、放大、缩小)
  3. 使用secure CRT的SFTP在LINUX与WINDOWS下交换文件
  4. C# 语法练习(2): 字符转义
  5. 牛客算法周周练4 题解
  6. Java LineNumberReader reset()方法及示例
  7. Windows xp+Ubuntu 11.10 硬盘安装
  8. 利用计算机解决鸡兔同笼问题,利用极限思想解决复杂鸡兔同笼问题
  9. Linux下使用GDAL进行开发(automake使用)
  10. 计算机组成原理微指令cpth,计算机组成原理(西安理工大学)实验二 CPTH模型机综合实验——微控制器实验.doc...
  11. 动环监控系统价格,动环监控系统价格多少
  12. mac 装java eclipse_Mac安装Eclipse教程
  13. 【Grafana】个人体验
  14. 海盗湾(The Pirate Bay)的战争——每一名技术人员都应该思考的问题
  15. 三重积分(Triple Integral)
  16. Rap2 模拟接口 常见规则示例
  17. 从启动过程讲述普元Mobile 8.0基座
  18. Java萌新入门的第一篇文章
  19. XAG一键并轨XRP媒体报道
  20. 【20保研】北京航空航天大学计算机学院2019年全国优秀大学生夏令营活动通知...

热门文章

  1. 为什么qt这么强大没人使用_浅析--懒懒口袋为什么得到这么多人的信任和使用?...
  2. c++删除文件delete_关于macos删除快捷键,你知道这些区别用法吗?
  3. *第十周*数据结构实践项目一【二叉树的链式存储算法库】
  4. spring boot 发邮件
  5. 安卓绿色联盟安全标准1.0到2.0,让用户隐私更安全
  6. .Net MVC缓存
  7. java json字符串转成 Map或List
  8. PHP 通用检测函数集
  9. 获取网页中的验证码图片
  10. VMware与Centos系统