基础代码:
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分钟执行一次。
本文详细介绍了Java中使用Timer调度定时任务的两种方式:scheduleAtFixedRate与schedule,并通过实例展示了不同参数设置下任务的执行规律。

1986

被折叠的 条评论
为什么被折叠?



