什么是定时任务调度
基于给定的时间点,给定的时间间隔或者给定的执行次数自动执行的任务。
Timer定义
Time是jdk自带的一个类,位于java.lang.Object下的java.util.Timer,定义为,有且仅有一个后台线程对多个业务线程进行定时频率的调度。
Timer的主要构件
Timer和TimerTask,timer定时调用TimerTask。
Timer的Hello world
业务逻辑的MyTimerTask类
public class MyTimerTask extends TimerTask{
private String name;
public MyTimerTask(String inputName) {
this.name = inputName;
}
@Override
public void run() {
//打印当前name的值
System.out.println("当前的name值为:"+name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Timer测试类的编写
public class MyTimer {
public static void main(String[] args) {
//创建一个timer实例
Timer timer = new Timer();
//创建一个MyTimerTask实例
MyTimerTask myTimerTask = new MyTimerTask("张三丰");
//设置timer定时定频率的调用myTimerTask的业务逻辑
//第一次执行是在两秒之后,之后每隔一秒执行一次
timer.schedule(myTimerTask, 2000L,1000L);
}
}
Timer的定时调度函数的用法
schedule的四种用法
1.timer.schedule(task, time);在时间等于或超过timer的时候执行且仅执行一次task。
- task:所有安排的任务
- time:执行任务的时间
实例如下:
MyTimerTask类做了如下的修改
public class MyTimerTask extends TimerTask{
private String name;
public MyTimerTask(String inputName) {
this.name = inputName;
}
@Override
public void run() {
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("当前时间为:"+sf.format(calendar.getTime()));
//打印当前name的值
System.out.println("当前的name值为:"+name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
MyTimer类详情如下
public class MyTimer {
public static void main(String[] args) {
//创建一个timer实例
Timer timer = new Timer();
//创建一个MyTimerTask实例