Android(java)学习笔记76:多线程-定时器概述和使用

定时器:

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

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

Timer

public Timer()

public void schedule(TimerTask task, long delay)

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

 

TimerTask---抽象类

public abstract void run()

public boolean cancel()

 

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

 

下面我们用于代码示例进行讲解:

1.public void schedule(TimerTask task, long delay)

 1 package cn.itcast_12;

 2 

 3 import java.util.Timer;

 4 import java.util.TimerTask;

 5 

 6 /*

 7  * 定时器:可以让我们在指定的时间做某件事情,还可以重复的做某件事情。

 8  * 依赖Timer和TimerTask这两个类:

 9  * Timer:定时

10  *         public Timer()

11  *         public void schedule(TimerTask task,long delay) 12  *         public void schedule(TimerTask task,long delay,long period)

13  *         public void cancel()

14  * TimerTask:任务

15  */

16 public class TimerDemo {

17     public static void main(String[] args) {

18         // 创建定时器对象

19         Timer t = new Timer();

20         // 3秒后执行爆炸任务

21         // t.schedule(new MyTask(), 3000);

22         //结束任务

23         t.schedule(new MyTask(t), 3000);

24     }

25 }

26 

27 // 做一个任务

28 class MyTask extends TimerTask {

29 

30     private Timer t;

31     

32     public MyTask(){}

33     

34     public MyTask(Timer t){

35         this.t = t;

36     }

37     

38     @Override

39     public void run() {

40         System.out.println("beng,爆炸了");

41         t.cancel();

42     }

43 

44 }

 

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

 1 package cn.itcast_12;

 2 

 3 import java.util.Timer;

 4 import java.util.TimerTask;

 5 

 6 /*

 7  * 定时器:可以让我们在指定的时间做某件事情,还可以重复的做某件事情。

 8  * 依赖Timer和TimerTask这两个类:

 9  * Timer:定时

10  *         public Timer()

11  *         public void schedule(TimerTask task,long delay)

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

13  *         public void cancel()

14  * TimerTask:任务

15  */

16 public class TimerDemo2 {

17     public static void main(String[] args) {

18         // 创建定时器对象

19         Timer t = new Timer();

20         // 3秒后执行爆炸任务第一次,如果不成功,每隔2秒再继续炸

21         t.schedule(new MyTask2(), 3000, 2000); 22     }

23 }

24 

25 // 做一个任务

26 class MyTask2 extends TimerTask {

27     @Override

28     public void run() {

29         System.out.println("beng,爆炸了");

30     }

31 }

 

3.定时删除指定带内容的目录

 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  * 需求:在指定的时间删除我们的指定目录(你可以指定c盘,但是我不建议,我使用项目路径下的demo)

12  */

13 

14 class DeleteFolder extends TimerTask {

15 

16     @Override

17     public void run() {

18         File srcFolder = new File("demo");

19         deleteFolder(srcFolder);

20     }

21 

22     // 递归删除目录

23     public void deleteFolder(File srcFolder) {

24         File[] fileArray = srcFolder.listFiles();

25         if (fileArray != null) {

26             for (File file : fileArray) {

27                 if (file.isDirectory()) {

28                     deleteFolder(file);

29                 } else {

30                     System.out.println(file.getName() + ":" + file.delete());

31                 }

32             }

33             System.out.println(srcFolder.getName() + ":" + srcFolder.delete());

34         }

35     }

36 }

37 

38 public class TimerTest {

39     public static void main(String[] args) throws ParseException {

40         Timer t = new Timer();

41 

42         String s = "2014-11-27 15:45:00";

43         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

44         Date d = sdf.parse(s);

45 

46         t.schedule(new DeleteFolder(), d);

47     }

48 }

 

你可能感兴趣的:(android)