在 Java 应用程序中计划重复执行的任务 - 编程入门网
生的时间。而这正是计划框架所支持的。考虑清单 2 中的 AlarmClock 实现(有关计划框架的源代码以及包含这个框架和例子的 JAR 文件,请参阅 参 考资料):
清单 2. AlarmClock 类
注意这段代码与煮蛋计时器应用程序非常相似。AlarmClock 实例拥有一个 Scheduler ( 而不是 Timer)实例,用于提供必要的计划。启动后,这个闹钟对 SchedulerTask (而不是 TimerTask)进行调度用以发出报警声。这个闹钟不是计划一个任务在固定的延迟时间后执行 ,而是用 DailyIterator 类描述其计划。在这里,它只是计划任务在每天上午 7:00 执行。 下面是一个正常运行情况下的输出:
在 Java 应用程序中计划重复执行的任务(3)时间:2011-04-19 IBM Tom WhiteDailyIterator 实现了 ScheduleIterator,这是一个将 SchedulerTask 的计划执行时间 指定为一系列 java.util.Date 对象的接口。然后 next() 方法按时间先后顺序迭代 Date 对象。返回值 null 会使任务取消(即它再也不会运行)―― 这样的话,试图再次计划将会 抛出一个异常。清单 3 包含 ScheduleIterator 接口: 清单 3. ScheduleIterator 接口
DailyIterator 的 next() 方法返回表示每天同一时间(上午 7:00)的 Date 对象,如 清单 4 所示。所以,如果对新构建的 next() 类调用 next(),那么将会得到传递给构造函 数的那个日期当天或者后面一天的 7:00 AM。再次调用 next() 会返回后一天的 7:00 AM, 如此重复。为了实现这种行为,DailyIterator 使用了 java.util.Calendar 实例。构造函 数会在日历中加上一天,对日历的这种设置使得第一次调用 next() 会返回正确的 Date。注 意代码没有明确地提到夏令时修正,因为 Calendar 实现(在本例中是 Gr |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |