序言:本文主要对Timer类的介绍以及API的使用详情
基于给定的时间点、给定的时间间隔或者给定的执行次数自动执行任务。
Timer 由JDK自带提供!
有且仅有一个后台线程对多个业务线程进行定时定频率的调度
首先,创建一个MyTimerTask类,继承TimerTask
public class MyTimerTask extends TimerTask {
private String name;
public MyTimerTask(String name) {
this.name = name;
}
@Override
public void run() {
System.out.println("current name is " + name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
1.schedule(task, time) : 在时间等于或者超过time的时候执行,且执行一次task。
// 创建一个Timer实例
Timer timer = new Timer();
// 创建一个TimerTask实例
MyTimerTask task = new MyTimerTask("s1");
/**
* 在时间等于或者超过time的时候执行,且执行一次task
*/
Calendar calendar = Calendar.getInstance();
// 在当前时间的5秒后执行该任务
calendar.add(Calendar.SECOND, 5);
timer.schedule(task, calendar.getTime());
2.schedule(task, time, period) : 在时间等于或者超过time的时候首次执行task,之后每隔period毫秒重复执行task
// 创建一个Timer实例
Timer timer = new Timer();
// 创建一个TimerTask实例
MyTimerTask task = new MyTimerTask("s2");
Calendar calendar = Calendar.getInstance();
/**
* 在时间等于或者超过time的时候首次执行task,之后每隔period毫秒重复执行task
*/
timer.schedule(task, calendar.getTime(), 3000);
3.schedule(task, delay) : 等待delay毫秒后执行且执行一次task
// 创建一个Timer实例
Timer timer = new Timer();
// 创建一个TimerTask实例
MyTimerTask task = new MyTimerTask("s3");
/**
* 等待delay毫秒后执行且执行一次task
*/
timer.schedule(task, 3000);
4.schedule(task, delay, period) : 等待等于或者超过delay毫秒后首次执行task 之后每隔period毫秒重复执行task
// 创建一个Timer实例
Timer timer = new Timer();
// 创建一个TimerTask实例
MyTimerTask task = new MyTimerTask("小米");
/**
* 等待delay毫秒后首次执行task 之后每隔period毫秒重复执行task
*/
timer.schedule(task, 3000, 2000);
1.scheduleAtFixedRate(TimerTask task, Date firstTime, long period) : 时间等于或者超过time的时候首次执行task,之后每隔period毫秒重复执行task
// 创建一个Timer实例
Timer timer = new Timer();
// 创建一个TimerTask实例
MyTimerTask task = new MyTimerTask("scheduleAtFixedRate1");
Calendar calendar = Calendar.getInstance();
/**
* 时间等于或者超过time的时候首次执行task,之后每隔period毫秒重复执行task
*/
timer.scheduleAtFixedRate(task, calendar.getTime(), 2000);
2.scheduleAtFixedRate(TimerTask task, long delay, long period):等待等于或者超过delay毫秒后首次执行task 之后每隔period毫秒重复执行task
// 创建一个Timer实例
Timer timer = new Timer();
// 创建一个TimerTask实例
MyTimerTask task = new MyTimerTask("scheduleAtFixedRate2");
/**
* 等待等于或者超过delay毫秒后首次执行task 之后每隔period毫秒重复执行task
*/
timer.scheduleAtFixedRate(task, 3000, 2000);
cancel() 取消当前TimerTask中的任务
scheduleExecutionTime() 返回此任务实际执行的已安排的执行时间