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);
}
}