天天看點

Java中的定時器

定時器是一個應用十分廣泛的線程工具,可用于排程多個定時任務以背景線程的方式執行。在Java中,可以通過Timer和TimerTask類來實作定義排程的功能。(在java.util包下)

  A:Timer(定時器類)

    public Timer()

    public void schedule(TimerTask?task, long?delay)

    public void schedule(TimerTask task, long delay, long period)

  B:TimerTask(任務抽象類)

    public abstract void run()

    public boolean cancel()

  C:在實際開發中

    Quartz是一個完全由java編寫的開源排程架構。

  D:需求:在指定的時間删除我們的指定目錄(示範:使用項目路徑下的demo)

示例代碼如下:

1 package cn.itcast_12;
 2 
 3 import java.io.File;
 4 import java.text.ParseException;
 5 import java.text.SimpleDateFormat;
 6 import java.util.Date;
 7 import java.util.Timer;
 8 import java.util.TimerTask;
 9 
10 /*
11  * 需求:在指定的時間删除我們的指定目錄(示範:使用項目路徑下的demo)
12  */
13 public class TimerTest {
14     public static void main(String[] args) throws ParseException {
15         Timer t = new Timer();
16 
17         String s = "2014-11-27 15:45:00";
18         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
19         Date d = sdf.parse(s);
20 
21         t.schedule(new DeleteFolder(), d);
22     }
23 }
24 
25 
26 class DeleteFolder extends TimerTask {
27 
28     @Override
29     public void run() {
30         File srcFolder = new File("demo");
31         deleteFolder(srcFolder);
32     }
33 
34     // 遞歸删除目錄
35     public void deleteFolder(File srcFolder) {
36         File[] fileArray = srcFolder.listFiles();
37         if (fileArray != null) {
38             for (File file : fileArray) {
39                 if (file.isDirectory()) {
40                     deleteFolder(file);
41                 } else {
42                     System.out.println(file.getName() + ":" + file.delete());
43                 }
44             }
45             System.out.println(srcFolder.getName() + ":" + srcFolder.delete());
46         }
47     }
48     
49 }      

我的GitHub位址:

https://github.com/heizemingjun

我的部落格園位址:

http://www.cnblogs.com/chenmingjun

我的螞蟻筆記部落格位址:

http://blog.leanote.com/chenmingjun

Copyright ©2018 黑澤明軍

【轉載文章務必保留出處和署名,謝謝!】