TimerTask 是一个抽象类,实现 TimerTask 的 run 方法。
示例 1:
/**
* Created by liwei on 16/7/19.
*/
/*
* 定时器:可以让我们在指定的时间做某件事情,还可以重复的做某件事情。
* 依赖Timer和TimerTask这两个类:
* Timer:定时
* public Timer()
* public void schedule(TimerTask task,long delay)
* public void schedule(TimerTask task,long delay,long period)
* public void cancel()
* TimerTask:任务
*/
public class TimeDemo {
public static void main(String[] args) {
// 创建定时器对象
Timer timer = new Timer();
// 3 秒以后执行任务
timer.schedule(new MyTask(timer),3*1000);
}
}
// 做一个任务
class MyTask extends TimerTask{
// 为了控制定时器结束,将 Timer 作为成员变量
private Timer timer;
public MyTask(){}
public MyTask(Timer timer){
this.timer = timer;
}
@Override
public void run() {
System.out.println("beng,爆炸了");
// 结束任务
timer.cancel();
}
}
示例2:
public class TimeDemo2 {
public static void main(String[] args) {
Timer timer =new Timer();
// 5 秒以后执行任务,每隔 2 秒(周期)再执行一次
timer.schedule(new MyTask2(),5*1000,2*1000);
}
}
// 做一个任务
class MyTask2 extends TimerTask{
@Override
public void run() {
System.out.println("任务正在执行 --- ");
}
}
示例3:
递归地删除目录
/**
* Created by liwei on 16/7/19.
*
* 递归删除目录:在指定的时间内删除我们指定的目录
*/
class DeleteFolder extends TimerTask{
@Override
public void run() {
File srcFolder = new File("demo");
deleteFolder(srcFolder);
}
// 递归删除目录
private void deleteFolder(File srcFolder) {
File[] fileList = srcFolder.listFiles();
if(fileList!=null){
for(File file:fileList){
if(file.isDirectory()){
deleteFolder(file);
}else {
Boolean ifDelete = file.delete();
String fileName = file.getName();
System.out.println("文件 " + fileName + "是否删除成功:" + ifDelete);
}
}
System.out.println(srcFolder.getName() + "删除根文件夹是否成功:" + srcFolder.delete());
}
}
}
public class TimerTest {
public static void main(String[] args) throws ParseException{
Timer timer = new Timer();
String s = "2016-07-19 00:00:00";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(s);
// 在指定的时间递归地删除一个文件夹
timer.schedule(new DeleteFolder(),date);
}
}