目录
- 一、背景介绍
- 二、思路&方案
- 三、过程
- 1.Timer关键类图
- 2.Timer的基本用法
- 3.结合面向对象的角度进行分析总结
- 四、总结
- 五、升华
一、背景介绍
最近业务中使用了jdk中的Timer,通过对Timer源码的研究,结合对面向对象的认识,对Timer进行针对性的总结
二、思路&方案
- 1.Timer关键类图
- 2.Timer的基本用法
- 3.结合面向对象的角度进行分析总结
三、过程
1.Timer关键类图
2.Timer的基本用法
import java.util.Timer;
import java.util.TimerTask;
public class Client {
public static void main(String[] args) {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
System.out.println(11111);
}
},0,1000);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
timer.cancel();
//这里将Timer置为null,以便于下次再使用必须重新实例化
timer = null;
}
}
3.结合面向对象的角度进行分析总结
分析总结见四、总结
四、总结
- 1.层次很分明;对外通过Timer将TaskQueue和TimerThread包装起来,所有的调用都通过Timer进行
- 2.TaskQueue和TimerThread为final修饰,并且在Timer实例化之时就存在了,同生共死的关系增加安全性
- 3.构造函数通过方法多态,将多种可能进行了实现以满足不同场景的需求
- 4.行为细粒度的划分,使得行为的内聚性更强,复用性更高
- 5.调用了Timer的canlel()方法该Timer将不可再用,防止Timer一直执行占用资源
五、升华
修炼的境界,看山是山(刚接触的时候,只知道皮毛,用起来还是会出各种问题)、看山不是山(达到了熟练运用,但是对应内部的实现原理还是很模糊)、看山还是山(通过对原理的分析,学习到了设计思想,能够将设计思想运用到各种场景中)