定时器
定时器是一个应用广泛的线程工具,可以用于调度多个定时任务以后台线程的方式执行。在Java中可以用Timer和TimerTask类来来实现定义调度的功能
方法:
cancel()取消任务或定时器
构造方法:
public void schedule(TimerTask task, long delay): 经过delay这么长时间执行task这个任务
public void schedule(TimerTask task,long delay,long period);经过delay这么长时间第一次执行task这个任务,然后每隔period时间在此执行task任务
public void schedule(TimerTask task, Date time): 就是在time指定的时间点上执行task任务
public void schedule(TimerTask task, Date firstTime, long period):就是在Timer指定的时间点上第一次执行task任务,然后每隔period时间在此执行task的任务接口TimerTask
package org.westos.demo2;
import java.util.Timer;
import java.util.TimerTask;
public class MyTimeTask extends TimerTask{
Timer time;
public MyTimeTask(Timer time) {
super();
this.time=time;
}
@Override
public void run() {
//需要定时器执行的代码
System.out.println("砰-----爆炸了");
time.cancel();
}
}
经过delay这么长时间第一次执行task这个任务,然后每隔period时间在此执行task任务
package org.westos.demo2;
import java.util.Timer;
import java.util.TimerTask;
public class MyTest2 {
public static void main(String[] args) {
//经过delay这么长时间第一次执行task这个任务,然后每隔period时间在此执行task任务
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("砰---爆炸了");
}
}, 1000,1000);
}
}
在time指定的时间点上执行task任务
package org.westos.demo2;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class MyTest3 {
public static void main(String[] args) throws ParseException {
// 就是在time指定的时间点上执行task任务
Timer timer = new Timer();
//指定定时任务执行的日期
String time="2018-02-26 16:51:00";
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(time);
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("爆炸了");
}
}, date);
}
}
案例:定时删除文件夹
package org.westos.demo2;
import java.io.File;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class MyTest4 {
public static void main(String[] args) throws ParseException {
// 定时删除文件夹
Timer timer = new Timer();
String time = "2018-02-26 17:01:00";
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(time);
timer.schedule(new MyTask(timer), date);
}
}
class MyTask extends TimerTask {
Timer timer;
public MyTask(Timer timer) {
super();
this.timer = timer;
}
@Override
public void run() {
// 执行删除文件夹的操作
File file = new File("E:\\demo");
delFile(file);
// 关闭定时器
timer.cancel();
}
public void delFile(File file) {
File[] listFiles = file.listFiles();
for (File f : listFiles) {
if (f.isFile()) {
f.delete();
} else {
delFile(f);
}
}
file.delete();
}
}