自制毫秒级别定时器
定时器的作用
如果我们希望一个代码段或者一个函数以一定的时间间隔重复被调用,可以使用定时器调用。
关于定时器的实现构思
在自己做定时器前我们需要从用户使用角度和功能角度思考定时器的实现过程。
1、 用户只用在初始化该定时器类的时候调用单参构造,就可以决定代码段或函数段被重复调用的间隔时间;
2、 用户要执行的代码段由用户自己完成,所以在定时器里应该有一个抽象方法,该方法完成此需求;
3、 隔一定间隔就执行一个代码片段或函数调用,因此需要一个线程,这个线程经过一段时间就“醒来”,并执行外部要求的操作。
将构思转化为实际代码
对需求进行分析后,代码的完成就依照着需求来完成;
①在完成定时器时不仅需要无参构造(间隔时间为默认的间隔时间)也需要单参构造(可以实现将用户传进来的参数赋值给间隔时间),而无参构造调用单参构造;
②该定时器类中应有一个抽象方法,该方法由未来使用定时器的用户去完成,用来确定具体要调用的代码段;
③间隔调用一个代码段需要一个线程按间隔时间“苏醒”。
具体实现过程如下:
public abstract class SimpleDida implements Runnable{
private static final long DEFAULT_DELAY = 1000;
private volatile boolean goon;
private long delay;
private Object lock;
public SimpleDida() {
this(DEFAULT_DELAY);
}
public SimpleDida(long delay) {
this.delay = delay;
this.lock = new Object();
}
public abstract void doing();
@Override