本帖最后由 杨国祯 于 2012-4-22 21:36 编辑
给你个建议,你启动多个线程,不是只是简单的执行这个程序,用这个单独的线程去监管这个Timer事件,
这样可以完美解决,同步问题,以及Timer的按时出现,另外比如我们手机上面的闹钟用的就是这种机制,特别是Android手机用的就是这种方法!
对于Timer的结束问题:
自动结束:对 Timer 对象最后的引用完成后,并且 所有未处理的任务都已执行完成后,计时器的任务执行线程会正常终止(并且成为垃圾回收的对象)。但是这可能要很长时间后才发生。默认情况下,任务执行线程并不作为守护线程 来运行,所以它能够阻止应用程序终止。
主动结束:如果调用者想要快速终止计时器的任务执行线程,那么调用者应该调用Timer 的 cancel 方法。
(附)这些是API中这个类的方法
void cancel() 终止此计时器,丢弃所有当前已安排的任务。
int purge() 从此计时器的任务队列中移除所有已取消的任务。
void schedule(TimerTask task, Date time) 安排在指定的时间执行指定的任务。
void schedule(TimerTask task, Date firstTime, long period) 安排指定的任务在指定的时间开始进行重复的固定延迟执行。
void schedule(TimerTask task, long delay) 安排在指定延迟后执行指定的任务。
void schedule(TimerTask task, long delay, long period) 安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。
void scheduleAtFixedRate(TimerTask task, Date firstTime, long period) 安排指定的任务在指定的时间开始进行重复的固定速率执行。
void scheduleAtFixedRate(TimerTask task, long delay, long period) 安排指定的任务在指定的延迟后开始进行重复的固定速率执行。
以上基本上可以实现你需要的功能! 手工请支持!
|