定时任务调度工具之Timer(一)
一、什么是定时任务调度
基于给定的时间点,给定的时间间隔或者给定的执行次数自动执行的任务
二、Java中的定时调度工具
Timer:
由JDK直接提供,调用方式简单,不需要jar包支持;
只能完成一些简单的定时任务;
Timer走后台线程执行定时任务;
Quartz:
是OpenSymphony开源组织的开源项目,需要jar包支持;
时间控制功能远比Timer强大和完善;
可以使用多个执行线程执行定时任务;
三、Timer简介
3.1 Timer定义
有且仅有一个后台线程对多个业务线程进行定时定频率的调度
3.2 主要构件
Timer通过定时调用TimerTask来实现对任务的定时调度的目的。
Timer:可以理解为后台执行的线程
TimerTask:业务线程
3.3 Timer工具类详解
TimerThread:对应后台执行的线程
TimerTask:业务线程(run方法中为业务逻辑)
TimerThread通过定期地调用队列TaskQueue中的TimerTask里面的run方法的内容来实现对任务定时定频率的调用。
四、代码演示
1.编写需要定时调度的业务逻辑类
package com.hcx.timer;
import java.util.TimerTask;
/**
* Created by HCX on 2017/8/28.
* 需要定时调度的业务逻辑类
*/
public class MyTimerTask extends TimerTask{
private String name;
public MyTimerTask(String inputName) {
name = inputName;
}
@Override
public void run() {
//打印当前name的内容
System.out.println("Current exec name is:" + name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
2.编写定时调度类
package com.hcx.timer;
import java.util.Timer;
/**
* Created by HCX on 2017/8/28.
* 定时调度类
*/
public class MyTimer {
public static void main(String[] args){
//创建一个Timer实例(位于java.util包下的)
Timer timer = new Timer();
//创建一个MyTimerTask实例
MyTimerTask myTimerTask = new MyTimerTask("hcx");
/**
* 通过Timer定时定频率调用MyTimerTask的业务逻辑
* 即第一次执行是在当前时间的两秒钟之后,之后每隔一秒钟执行一次
*/
timer.schedule(myTimerTask,2000L,1000L);
}
}