目录
Timer类

一、构造方法

Timer类实例化创建对象 ,在构造方法里进行 非静态成员就地初始化 和 构造方法体执行 的构造初始化:
1.非静态成员就地初始化
进行非静态成员TaskQueue、TimerThread的就地初始化:
1.1TaskQueue类

1.1.1构造(在Timer成员初始化时)
创建一个 里面非静态存储 以执行时刻优先级顺序 存储定时器任务的 TimerTask数组 的任务队列TaskQueue
TimerTask类

定时器任务TimerTask 抽象类 抽象实现 Runnable可运行接口,里面非静态成员nextExcutionTime 预期执行时间 存储该任务执行的时刻
1.2TimerThread类

1.2.1构造(在Timer成员初始化时)
创建一个 构造传 上面就地初始化刚创建好 的 Timer类非静态成员任务队列TaskQueue 到TimerThread类的构造方法体中 赋值给TimerThread的非静态任务队列成员TaskQueue 的定时器线程TimerThread
1.2.2start(在Timer构造方法体时)
定时器线程TimerThread 继承实现类Thread, 调用父类Thread的start 即启动线程 调用父类的run 向下重写执行TimerThread的run
1.2.3run
以非静态成员任务队列为锁 ,++持续++ 对非静态任务队列成员****队列队首 查看、等待、取出、执行 最早的定时器任务
1.2.3.1队列空任务
队列空任务 厌锁阻塞 等待安排任务时来的唤醒
1.2.3.2队列有任务
队列有任务 优先级查看 最早定时器任务 的执行时刻 与 此时刻 比较 是否已到时 :
1.2.3.2.1时间已到
执行时间已到 便从任务队列取出 此定时器任务 并调用run地 方法执行任务内容
1.2.3.2.2时间未到
执行时间未到 就厌锁等待 差时到后 再自动唤醒 去取执行
2.构造方法体执行
构造方法体中 启动定时器线程 开始持续 对非静态任务队列成员 队列队首 查取执等 最早的定时器任务
二、schedule方法

Timer类的非静态方法schedule,调用去安排任务时,以非静态成员任务队列为锁:
1.计算执行时刻
将定时器任务里面的 非静态成员nextExecutionTime 赋上 安排时刻 + 延迟时间 为 执行时刻
2.任务加入队列

将 定时器任务 加入 进 非静态成员任务队列 里的 ++优先级数组++
3.通知定时器线程
通知 同样以++相同任务队列加锁++的 定时器线程,唤醒 队列无任务阻塞 与 等差时阻塞
3.1意义
schedule安排定时器任务 进任务队列后 ++已经上队列结构里++去了,需要定时器线程 现在查看队列队首 是否换元素 而去换等对 上面的 会更早先执行的 任务,所以之后去通知定时器线程:
3.1.1在阻塞
如果定时器线程正在阻塞 便醒来 去对现队列 查取队首去执等
3.1.2没阻塞
如果定时器线程没在阻塞 就正在对 现队列队首 去查取执等