Java定时器
1.基于Timer和TimerTask实现定时任务
public static void main(String[] args) {
Timer timer = new Timer();
TimerTask task = new TimerTask() {
public void run() {
System.err.println("定时任务执行!!!");
}
};
timer.schedule(task, new Date(),5000);
}
在Timer 中共有 schedule 方法,用来实现定时任务。
1.1 schedule (TimerTask task, Date firstTime, long period) 从什么时间开始,间隔多少毫秒执行一次。
TimerTask task:定时执行的线程
Date firstTime:在什么时间开始执行任务
long period : 间隔多长时间执行一次(毫秒)。
Demo : timer.schedule(task, new Date(),5000);
——————————————————————————————————————
1.2 schedule(TimerTask task, long delay) 多少毫秒后执行执行,不重复。
TimerTask task:需要执行的任务
long delay:项目启动后多少时间后执行一次
Demo:timer.schedule(task,10000);
——————————————————————————————————————
1.3 schedule(TimerTask task, Date time) 指定时间执行,不重复
TimerTask task:需要执行的任务
Date time:指定时间
Demo:timer.schedule(task, DateUtil.stringToDate(“2020-08-17”));
——————————————————————————————————————
1.4 schedule(TimerTask task, long delay, long period) 从现在起delay毫秒后开始每隔period毫秒执行
TimerTask task:定时执行的线程
long delay:从现在起多少毫秒之后开始
long period : 间隔多长时间执行一次(毫秒)。
Demo:timer.schedule(task, 5000,2000);
————————————————————————————
2. 基于线程 循环执行
public class Task implements Runnable {
private long time;
public Task(long time) {
this.time = time;
}
@Override
public void run() {
while(true) {
System.err.println("定时任务执行!!!");
try {
Thread.sleep(time);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
Thread thread = new Thread(new Task(5000));
thread.start();
}