本文最后更新于:2 个月前
README
该小程序完成了一个简单的倒计时项目,实现功能如下
- 倒计时设定
- 加1小时/减1小时
- 加1分钟/减1分钟
- 加1秒钟/减1秒钟
- 功能设定
各类设计
class MicroWave
MicroWaveMain
MicroWaveWindow
代码解析
用于将任务安排在后台线程中用于未来执行的工具。任务可以安排为一次性执行,或定期重复执行。
与每个Timer
对象相对应的是一个单一的背景线程,用于按顺序执行时间器的所有任务。时间器任务应快速完成。如果一个时间器任务需要过多的时间来完成,它”记录”了时间器的任务执行线程。这反过来又会延迟后续任务的执行,这些任务可能会”捆扎”起来,并在(如果)违规任务最终完成时快速连续执行。
在最后一次对定时器
对象的实时引用消失所有未完成的任务完成执行后,定时器的任务执行线程优雅地终止(并成为垃圾收集的对象)。然而,这可能需要很长的时间才能发生。默认情况下,任务执行线程不会作为守护神线程运行,因此它能够阻止应用程序终止。如果呼叫者想要快速终止计时器的任务执行线程,呼叫者应调用计时器的取消
方法。
例如,如果计时器的任务执行线程意外终止,因为其停止
方法被调用,则任何在计时器上安排任务的进一步尝试都将导致非法状态例外
,就好像调用了计时器的取消
方法一样。
此类是线程安全的:多个线程可以共享单个计时器
对象,而无需外部同步。
此类不提供实时保证:它使用对象安排
任务。
Java 5.0 介绍了该包,其中一个并发公用设施是计划ThreadPool执行器
,它是一个线程池,用于以给定速度或延迟重复执行任务。它实际上是一个多功能的替代/组合,因为它允许多个服务线程,接受不同的时间单位,不需要子分类(只是实现)。用一个线程进行配置,就等于。java.util.concurrent``Timer``TimerTask``TimerTask``Runnable``ScheduledThreadPoolExecutor``Timer
实施说明:此类将规模扩展到大量并发计划的任务(数千个任务应该不构成问题)。在内部,它使用二进制堆来表示其任务队列,因此安排任务的成本是 O(log n),其中 n 是并发计划任务的数。
实施说明:所有构造器启动时器线程。
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) 安排指定任务,以便重复固定速率执行,从指定延迟后开始。 |
可以一次性安排或由定时器重复执行的任务。
修饰语 |
构造器和描述 |
protected |
TimerTask() 创建新的时间器任务。 |
修饰器和类型 |
方法和描述 |
boolean |
cancel() 取消此时间器任务。 |
abstract void |
run() 此定时器任务将执行的操作。 |
long |
scheduledExecutionTime() 返回此任务最近实际执行的预定执行时间。 |