java 22

定时器是一个应用十分广泛的线程工具,可用于调度多个定时任务以后台线程的方式执行。

在Java中,可以通过Timer和TimerTask类来实现定义调度的功能

开发中 Quartz是一个完全由java编写的开源调度框架。

定时器:可以让我们在指定的时间做某件事情,还可以重复的做某件事情。
依赖Timer和TimerTask这两个类:
  TimerTask:任务类
  Timer:定时类
   A、public Timer() 创建一个新计时器。
   B、public void schedule(TimerTask task,long delay) 安排在指定延迟后执行指定的任务。
   C、public void schedule(TimerTask task,long delay,long period)
      安排指定的任务在指定的时间开始进行重复的固定延迟执行。以近似固定的时间间隔(由指定的周期分隔)进行后续执行。
   D、public void schedule(TimerTask task,Date time)
      安排在指定的时间执行指定的任务。如果此时间已过去,则安排立即执行该任务。
   E、public void cancel() 终止此计时器,丢弃所有当前已安排的任务。

例子1:A+B+E

 1 public class TimerDemo1 {
 2     public static void main(String[] args) {
 3         
 4     
 5         //创建定时器对象
 6         Timer t = new Timer();
 7         
 8         // 安排在指定延迟后执行指定的任务。
 9         //t.schedule(new MyTask(), 2000);
10         
11         //我想要在执行完任务后就停止运行
12         t.schedule(new MyTask(t), 2000);
13     }
14 }
15     //建立所要执行的任务
16     class MyTask extends TimerTask{
17     //用构造方法初始化定时器对象t
18     private Timer t;
19     public MyTask(){}
20     public MyTask(Timer t){
21         this.t = t;
22     }
23     @Override
24     public void run() {
25         System.out.println("爆炸");
26         t.cancel();
27     }
28 }

例子2:A+C+E

 1 /*
 2  在指定时间执行一次任务,期后每隔特定时间就执行一次
 3  */
 4 public class TimerDemo2 {
 5 
 6     public static void main(String[] args) {
 7         // 创建定时器对象
 8         Timer t = new Timer();
 9 
10         // 在指定时间执行一次任务,期后每隔特定时间就执行一次
11         t.schedule(new MyTask1(), 3000, 2000);
12 
13     }
14 }
15 
16 // 创建任务
17 class MyTask1 extends TimerTask {
18     @Override
19     public void run() {;
20         System.out.println("爆炸");
21 
22     }
23 }

例子3:指定时间执行任务(指定时间删除目录)

 1 /*
 2  需求:在指定的时间删除指定目录 demo
 3  */
 4 public class TimerTest {
 5 
 6     public static void main(String[] args) throws ParseException {
 7         // 创建定时器对象
 8         Timer t = new Timer();
 9         // 设定在10:38:40 进行删除
10         String s = "2016-10-12 10:38:40";
11         // 把字符串s解析为日期
12         SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
13         // String - Date 进行解析 public Date parse(String source);
14         Date d = date.parse(s);
15 
16         // 进行定时器任务
17         t.schedule(new Delete(), d);
18 
19     }
20 }
21     // 创建任务
22     class Delete extends TimerTask {
23 
24         public void run() {
25             // 封装目录
26             File file = new File("demo");
27             // 删除
28             DeleteFile(file);
29         }
30     
31     // 删除目录
32     public void DeleteFile(File file) {
33         // 获取目录中的所有文件或文件夹的名称集合
34         File[] allfile = file.listFiles();
35 
36         // 遍历集合
37         if (allfile != null) {// 目录不为空
38             for (File f : allfile) {
39                 if (f.isDirectory()) {
40                     // 如果是文件夹,就重新获取名称集合并遍历
41                     DeleteFile(f);    
42                 } else {
43                     //如果是文件,就删除。
44                     System.out.println(f.getName()+ f.delete());
45                 }
46             }
47             System.out.println(file.getName() + file.delete());
48         }
49     }
50 }
何事都只需坚持.. 难? 维熟尔。 LZL的自学历程...只需坚持
原文地址:https://www.cnblogs.com/LZL-student/p/5951894.html