一、TimerTask的使用
Timer.java中含有3个类:Timer、TimerThread、TaskQueue。
三者关系为:TaskQueue中存放一些列将要执行的TimerTask,以数组的形式存放,下标约小(注:下标为0不处理,即使用的最小下标为1),则表明优先级越高。
TimerThread为Thread的扩展类,会一直从TaskQueue中获取下标为1的TimerTask进行执行。并根据该TimerTask是否需要重复执行来决定是否放回到TaskQueue中。
Timer用于配置用户期望的任务执行时间、执行次数、执行内容。它内部会配置TimerThread、TaskQueue。
TimerTask就是一个实现了run方法的类,TimerTask是一个抽象类,实现了Runnable,提供了抽象方法run()。实现:
- new 一个Timer,Timer会创建一个线程执行TaskQueue中的TimerTask。
- 实现 TimerTask的run方法, 明确要做什么,可以继承实现, 也可用匿名内部类。
- 调用Timer实例的 schedule 或 scheduleAtFixedRate 方法,将TimerTask放入Timer,并指定开始时间和间隔时间。
public void work(){
new Timer().schedule(new TimerTask(){
@Override
pulic void run(){}},DELAY,PERIOD);
TimerTask的测试
把run()中的代码提取为静态方法去测试,不要测整个方法。
匿名方法在测试是需要步入,而不是步进。步进会直接跳到方法结束的地方,而不会执行下一行代码。