Timer定时器
- 前言
- 架构
- 代码
- 定义测试环境
- 简单实现调度
- 原理接口
- 总结一 :
- 关于 cancel()
- 简单实现Cancel
- 关于 TimerTask -- scheduledExecutionTime()
- 关于 timer方法purge
- 总结
前言
timer任务调度工具,定时器:
是java自带的调度工具。可以实现简单的定时任务调度。线程为单线程,不可存在并
发。通过实现TimerTask类来实现里面的Run方法,通过Timer的Schedoule方法实现
架构
代码
继承timerTask,重写线程
public class MyTimerTaske extends TimerTask {
private String name;
public MyTimerTaske(String name) {
this.name = name;
}
@Override
public void run() {
System.out.println("hello,java:我说线程----" + name);
// 设置时间
Calendar instance = Calendar.getInstance();
// 设置格式
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 输出当前时间
System.out.println("当前时间为"+simpleDateFormat.format(instance.getTime()));
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
定义测试环境
public class TimerDemo {
public static void main(String[] args) {
// 定义一个timer
Timer timer = new Timer();
// 创建一个TimerTasker类
MyTimerTaske myTimerTaske = new MyTimerTaske("NO1");
// 创建时间
Calendar instance = Calendar.getInstance();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 输出当前时间
System.out.println(simpleDateFormat.format(instance.getTime()));
// 设置秒数为之后的3秒后
instance.add(Calendar.SECOND,3);
// TODO step1 当时间到秒数3秒之后执行此线程
// timer.schedule(myTimerTaske,instance.getTime());
// System.out.println("任务执行结束,传参只设置了,调用线程,和调用线程时间没有调用重复线程");
// System.out.println("-------------------------------------------------第二个------------------------------------------------------");
// TODO step2 线程二,继续调用定时和任务,并且间隔2秒之后重复调用
// myTimerTaske.setName("NO2");
// timer.schedule(myTimerTaske,instance.getTime(),2000);
System.out.println("-------------------------------------------------第三个------------------------------------------------------");
// TODO step2 线程三,调用定时任务,delay距离当前时间多久,单位毫秒
myTimerTaske.setName("NO3");
timer.schedule(myTimerTaske,2000);
}
}
简单实现调度
原理接口
总结一 :
scheduleAtFixedRate 跟 schedule区别多了一个判断,都调用了sched方法
关于 cancel()
队列线程停止,队列设为空
简单实现Cancel
关于 TimerTask – scheduledExecutionTime()
默认为0l 返回period+或者-的long类型时间,也就是将要执行的时间。
关于 timer方法purge
队列中移除的调用任务计数
总结