基础代码:

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分钟执行一次。

 

相关文章:

  • 2021-08-02
  • 2022-01-01
  • 2021-05-14
  • 2022-12-23
  • 2022-12-23
  • 2021-11-25
猜你喜欢
  • 2021-08-22
  • 2022-12-23
  • 2021-09-10
  • 2021-06-09
  • 2021-11-12
  • 2022-01-21
  • 2022-01-15
相关资源
相似解决方案