是一个应用十分广泛的线程工具, 可用于调度多个定时任务以后台线程的方式执行。
在Java中,可以通过Timer和TimerTask类来实现定义调度的功能
Timer()
//创建一个新的计时器。
void schedule(TimerTask task, long delay)
//在指定的延迟之后安排指定的任务执行。
void schedule(TimerTask task, long delay, long period)
//在指定 的延迟之后开始 ,重新执行 固定延迟执行的指定任务。
void cancel()
//终止此计时器,丢弃任何当前计划的任务。
TimerTask :任务
public class TimerDemo {
public static void main(String[] args) {
//创建定时器对象
Timer timer = new Timer();
//在指定的延迟(3000毫秒)之后安排指定的任务(MyTask)执行
timer.schedule(new MyTask(timer),3000);
}
}
class MyTask extends TimerTask{
private Timer timer;
public MyTask(){
}
public MyTask(Timer timer){
this.timer=timer;
}
@Override
public void run() {
System.out.println("beng!!!爆炸了!");
timer.cancel();
}
}
public class TimerDemo2 {
public static void main(String[] args) {
Timer timer = new Timer();
//在指定延迟之后开始,重新执行固定延迟执行的指定任务
timer.schedule(new MyTask2(),3000,2000);
}
}
class MyTask2 extends TimerTask{
@Override
public void run() {
System.out.println("beng!!!爆炸了!");
try {
FileReader fr = new FileReader(
"D:\IdeaProjects\bigdata13\src\com\shujia\java\day22\a1.txt");
BufferedReader br = new BufferedReader(fr);
String s = br.readLine();
System.out.println(s);
} catch (IOException e) {
e.printStackTrace();
}
}
}
public class TimerTest { public static void main(String[] args) throws ParseException { Timer timer = new Timer(); String s="2021-10-27 15:33:20"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date data = sdf.parse(s); //指定时间调度任务删除目录 timer.schedule(new DeleteFolder(timer),data); } } class DeleteFolder extends TimerTask { private Timer timer; public DeleteFolder(Timer timer){ this.timer=timer; } @Override public void run() { File file = new File("D:\IdeaProjects\bigdata13\src\data"); deleteFile(file); timer.cancel(); } //写一个方法递归删除目录 public void deleteFile(File file){ File[] files = file.listFiles(); if(files!=null){ for (File file1 : files) { if(file1.isDirectory()){//如果是目录 deleteFile(file1);//递归调用deleteFile(File file)删除目录 }else{//如果是文件,file.delete直接删除 System.out.println(file1.getName()+"-----"+file1.delete()); } } //此时目录file已为空,直接删除 System.out.println(file.getName()+"----"+file.delete()); } } }



