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)。
需要注意的是scheduleAtFixedRate和schedule在参数完全相同的情况下,执行效果是不同的。上面例子中任务只是打印一个字符串,比较简单。但如果任务比较复杂,或者由于任何原因(如垃圾回收或其他后台活动)而延迟了某次执行,则scheduleAtFixedRate方法将快速连续地出现两次或更多的执行,从而使后续执行能够“追赶上来”;而schedule方法的后续执行也将被延迟。所以,在长期运行中,scheduleAtFixedRate执行的频率将正好是指定周期的倒数,schedule 执行的频率一般要稍慢于指定周期的倒数。
scheduleAtFixedRate 效率总体上高于schedule
分享到:
相关推荐
主要为大家详细介绍了java中timer的schedule和scheduleAtFixedRate方法区别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
NULL 博文链接:https://michael1990.iteye.com/blog/2113141
java关于Timer schedule执行定时任务
c# ScheduleTimer_src 自定义 c# ScheduleTimer_src
今天小编就为大家分享一篇关于Java中Timer的schedule()方法参数详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
Purple Parrot ScheduleTimer ActiveX控件 主要是为建立表格的用户提供挑选表格的功能。当表格已经收集完毕,要收集的日期和时间已经到达, ScheduleTimer控件将通知运用程序。 Purple Parrot ...
C语言02-Timer0-Timer1-Timer2-Timer3-Timer4测试程序(STC32G-DEMO-CODE-220311kw)C语言02-Timer0-Timer1-Timer2-Timer3-Timer4测试程序(STC32G-DEMO-CODE-220311kw)C语言02-Timer0-Timer1-Timer2-Timer3-Timer4...
1、Timer和TimerTask在调用cancel()取消后不能再执行 schedule语句 2、只能在UI主线程中更新控件/组件。在其他线程中,更新控件/组件 https://blog.csdn.net/qq_31939617/article/details/80118302
最新单片机仿真 TIMER0与TIMER1控制条形LED最新单片机仿真 TIMER0与TIMER1控制条形LED最新单片机仿真 TIMER0与TIMER1控制条形LED最新单片机仿真 TIMER0与TIMER1控制条形LED最新单片机仿真 TIMER0与TIMER1控制条形LED...
单片机C语言程序设计 TIMER0与TIMER1控制条形LED(有源码)单片机C语言程序设计 TIMER0与TIMER1控制条形LED(有源码)单片机C语言程序设计 TIMER0与TIMER1控制条形LED(有源码)单片机C语言程序设计 TIMER0与TIMER1控制...
本文实例讲述了C#中Forms.Timer、Timers.Timer、Threading.Timer的用法分析,分享给大家供大家参考。具体分析如下: 在.NET Framework里面提供了三种Timer ① System.Windows.Forms.Timer ② System.Timers.Timer ③...
单片机C语言程序设计31 TIMER0与TIMER1控制条形LED(基于8051+Proteus仿真)单片机C语言程序设计31 TIMER0与TIMER1控制条形LED(基于8051+Proteus仿真)单片机C语言程序设计31 TIMER0与TIMER1控制条形LED(基于8051+...
加Timer控件 timer1 编写其Tick事件为 private void timer1_Tick(object sender, EventArgs e) { this.toolStripStatusLabel3.Text = "系统当前时间:" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); } ...
基于Verilog的timer计时器,start开始,到达设置计时点时输出一个高电平up信号
计时器 在Rust中以及... schedule_with_delay (chrono :: Duration :: seconds ( 3 ), move || { tx. send (()). unwrap ();});rx. recv (). unwrap ();println! ( "This code has been executed after 3 seconds" );
学习32位单片机的基础例程,主要针对初学者对TIMER的编程学习
addintimer高级版是一个万能定时器,非常好用,强烈推荐,可以当时间定时器来用,还有整点报时,定时录音等功能
单片机C语言程序设计TIMER0控制流水灯(基于8051+Proteus仿真)单片机C语言程序设计TIMER0控制流水灯(基于8051+Proteus仿真)单片机C语言程序设计TIMER0控制流水灯(基于8051+Proteus仿真)单片机C语言程序设计...
主要介绍了Java多线程定时器Timer原理及实现,涉及Timer的schedule的使用,定时器Timer的schedule等相关内容以及代码示例,具有一定参考价值,需要的朋友可以了解下。
c8051f340 TIMER0定时器中断,通过定时器达到所需的功能