定时器可以帮助我们监管一部分的任务,只需要在规定的时间内自动执行,可以提高我们平常时间效率,下面来一起看看如何实现简单的java定时器
一、定时器
定时器相当于一个任务管理器。有些任务可能现在执行, 有些任务可能过1个小时,甚至很久才会执行。定时器就是对这些任务进行管理监视, 如果一个任务执行时间到了,定时器就会将这个任务执行。 保证所有的任务都会在合适的时间执行。
二、定时器的实现
1、 使用一个MyTask类描述每一个任务
2、 使用优先级队列管理这些任务类。
我们都知道优先级队列底层实现是堆(以小根堆为例), 堆顶的元素是所有的元素的最小值。 我们以任务的定时时间为比较原则构建, 这样就可以保证堆顶元素的任务执行时间是最短的(这样的实现,我们需要在Task类内部定义比较规则-即重写Comparable接口的CompareTo方法),当一个任务执行完毕, 就会从优先级队列取出掉, 然后内部重新组织保证新的堆顶元素是定时时间最短的。
3、使用一个线程循环扫描优先级队列, 相当于一个监控线程,循环判断堆顶任务是否满足执行时间。
三、定时器的组成
1.任务类MyTask
//描述定时器的任务
class MyTask implements Comparable<MyTask> {
private Runnable runnable;
//记录定时器的执行时间
private long time;
public Runnable getRunnable() {
return runnable;
}