Timer 定时器:指可使用其在未来某个时间执行线程任务;
具体实现如下:
public class MyTest {
public static void main(String[] args) throws ParseException {
//Timer 定时器:可使用其在未来某个时间执行 线程任务
Timer timer = new Timer();
//执行定时任务
MyTimerTask myTimerTask = new MyTimerTask(timer);
//1. 等待2000后执行定时任务
timer.schedule(myTimerTask, 2000);
//2. 等两秒后,执行第一次任务,然后每次间隔一秒重复执行。
timer.schedule(myTimerTask,2000,1000);
/*
3. 指定日期来执行
String str="2019-11-06 14:28:00";
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(str);
timer.schedule(myTimerTask,date);
*/
// timer.cancel();//关闭,不能放在主线程中,否则很可能没有执行其他线程任务定时器就关闭了;
}
}
class MyTimerTask extends TimerTask {
Timer timer;
public MyTimerTask(Timer timer) {
this.timer=timer;
}
@Override
public void run() {
System.out.println("删库跑路");
//关闭定时器,结束任务;
//timer.cancel();
}
}
应用如下:
实现删除文件夹结束,俗称“删库跑路”;
public class MyTest {
public static void main(String[] args) throws ParseException {
//创建定时器
Timer timer = new Timer();
File file = new File("C:\\Users\\Administrator\\Desktop\\img");
//传入定时器和文件对象;
MyTimer myTimer = new MyTimer(file,timer);
//创建日期
String datestr="2019-11-07 20:10:00";
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(datestr);
//执行定时任务
timer.schedule(myTimer,date);
}
}
class MyTimer extends TimerTask{
File file;
Timer time;
public MyTimer(File file, Timer timer) {
this.file=file;
this.time=timer;
}
@Override
public void run() {
//删除多级文件夹
deleteFolder(file);
//取消定时器
time.cancel();
}
private void deleteFolder(File folder) {
File[] files = folder.listFiles();
for (File f : files) {
if(f.isFile()){
f.delete();
}else{
deleteFolder(f);
}
}
//删除空文件夹
folder.delete();
}
}