一、背景介绍
最近业务中使用了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一直执行占用资源
五、升华
修炼的境界,看山是山(刚接触的时候,只知道皮毛,用起来还是会出各种问题)、看山不是山(达到了熟练运用,但是对应内部的实现原理还是很模糊)、看山还是山(通过对原理的分析,学习到了设计思想,能够将设计思想运用到各种场景中)