timer.scheduleAtFixedRate和timer.schedule的实验

基础代码:

Calendar  currentTime = Calendar.getInstance();

currentTime.setTime(new Date());

int  currentHour = currentTime.get(Calendar.SECOND);

currentTime.set(Calendar.SECOND,  currentHour + 20);//第一(大于20秒):currentHour + 20;第二(小于20秒):currentHour - 20;第三(等于当前):currentHour
currentTime.set(Calendar.MILLISECOND,  0);

Date NextHour = currentTime.getTime();

解释:

NextHour

1*60*1000:周期为一分钟

-----------------------------------------------------------------------------------------------------------------------

1、timer.scheduleAtFixedRate(task, firstTime, period)的实验

timer.scheduleAtFixedRate(new MyHourOnlineTask(event.getServletContext()),NextHour,1*60*1000);

实验结果:

假设条件:项目启动ok后的时间为2015-01-08 10:00:00!

第一:2015-01-08 10:00:20时定时任务会执行一次,之后从2015-01-08 10:00:20开始计算,每隔1分钟执行一次。

第二:2015-01-08 10:00:00时定时任务会执行一次,之后从2015-01-08 10:00:40开始计算,每隔1分钟执行一次。

第三:2015-01-08 10:00:00时定时任务会执行一次,每隔1分钟执行一次。

备注 timer.scheduleAtFixedRate(new MyHourOnlineTask(event.getServletContext()),0,1*60*1000);时,2015-01-08 10:00:00时定时任务会执行一次,每隔1分钟执行一次。

2、timer.schedule(task, firstTime, period)的实验

实验结果:

假设条件:项目启动ok后的时间为2015-01-08 10:00:00!

第一:2015-01-08 10:00:20时定时任务会执行一次,之后从2015-01-08 10:00:20开始计算,每隔1分钟执行一次。

第二:2015-01-08 10:00:00时定时任务会执行一次,每隔1分钟执行一次。

第三:2015-01-08 10:00:00时定时任务会执行一次,每隔1分钟执行一次。

备注 timer.schedule(new MyHourOnlineTask(event.getServletContext()),0,1*60*1000);时,2015-01-08 10:00:00时定时任务会执行一次,每隔1分钟执行一次。

时间: 2024-11-09 01:00:02

timer.scheduleAtFixedRate和timer.schedule的实验的相关文章

Forms.Timer、Timers.Timer、Threading.Timer的研究

.NET Framework里面提供了三种Timer System.Windows.Forms.Timer System.Timers.Timer System.Threading.Timer 一.System.Windows.Forms.Timer 1.基于Windows消息循环,用事件方式触发,在界面线程执行:是使用得比较多的Timer,Timer Start之后定时(按设定的Interval)调用挂接在Tick事件上的EvnetHandler.在这种Timer的EventHandler中可

C#-Forms.Timer、Timers.Timer、Threading.Timer的比较和使用

在.NET Framework里面提供了三种Timer ① System.Windows.Forms.Timer ② System.Timers.Timer ③ System.Threading.Timer 一.System.Windows.Forms.Timer 1.基于Windows消息循环,用事件方式触发,在界面线程执行:是使用得比较多的Timer,Timer Start之后定时(按设定的Interval)调用挂接在Tick事件上的EvnetHandler.在这种Timer的EventHa

[dpdk] TSC , HPET, Timer, Event Timer,RDTSCP

关于dpdk timer跨越CPU core调度的准确性问题 首先dpdk的timer接口里边使用 cpu cycle来比较时间.根据之前的内容 [dpdk] dpdk --lcores参数 当一个EAL thread映射在多个processor上的时候,cpu cycle有可能在不同的CPU core上面获得, 又因为cpu cycle是使用rdtsc指令获取的,这样会造成拿到的cpu cycle不准的问题. 首先,调查一下 rdtsc 指令: https://stackoverflow.co

简单理解java中timer的schedule和scheduleAtFixedRate方法的区别

timer的schedule和scheduleAtFixedRate方法一般情况下是没什么区别的,只在某个情况出现时会有区别--当前任务没有来得及完成下次任务又交到手上. 我们来举个例子: 暑假到了老师给schedule和scheduleAtFixedRate两个同学布置作业. 老师要求学生暑假每天写2页,30天后完成作业. 这两个学生每天按时完成作业,直到第10天,出了意外,两个学生出去旅游花了5天时间,这5天时间里两个人都没有做作业.任务被拖延了. 这时候两个学生采取的策略就不同了: sch

Timer TimerTask schedule scheduleAtFixedRate

jdk 自带的 timer 框架是有缺陷的, 其功能简单,而且有时候它的api 不好理解. import java.util.Date; import java.util.Timer; import java.util.TimerTask; public class TestTimer { private static final int delay = 1000; /** * @param args */ public static void main(String[] args) { Tim

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

在java中,Timer类主要用于定时性.周期性任务 的触发,这个类中有两个方法比较难理解,那就是schedule和scheduleAtFixedRate方法,在这里就用实例分析一下 (1)schedule方法:"fixed-delay":如果第一次执行时间被delay了,随后的执行时间按 照 上一次 实际执行完成的时间点 进行计算 (2)scheduleAtFixedRate方法:"fixed-rate":如果第一次执行时间被delay了,随后的执行时间按照 上一

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

在java中,Timer类主要用于定时性.周期性任务 的触发,这个类中有两个方法比较难理解,那就是schedule和scheduleAtFixedRate方法,在这里就用实例分析一下 (1)schedule方法:“fixed-delay”:如果第一次执行时间被delay了,随后的执行时间按 照 上一次 实际执行完成的时间点 进行计算(2)scheduleAtFixedRate方法:“fixed-rate”:如果第一次执行时间被delay了,随后的执行时间按照 上一次开始的 时间点 进行计算,并且

android timer的schedule和scheduleAtFixedRate运用

在java中,Timer类主要用于定时性.周期性任务的触发,这个类中有两个方法比较难理解,那就是schedule和scheduleAtFixedRate方法,在这里就用实例分析一下 java代码如下: [java] view plaincopy SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Date startDate = dateFormatter.parse("2

JAVA随笔篇一(Timer源代码分析和scheduleAtFixedRate的使用)

写完了基础篇,想了非常久要不要去写进阶篇.去写JSP等等的用法.最后决定先不去写.由于自己并非JAVA方面的大牛.眼下也在边做边学,所以决定先将自己不懂的拿出来学并记下来. Timer是Java自带的java.util.Timer类,通过调度一个java.util.TimerTask任务.这样的方式能够让程序依照某一个频度运行. 1.Timer类的源代码分析: public class Timer { /** * The timer task queue. This data structure