Android(java)学习笔记16:多线程

1. 定时器:

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

在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编写的开源调度框架。

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

  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(); // 保证 TimerTask中run任务执行完毕,才能取消定时器。因此我们这里才会在这个位置使用Timer的cancel方法
42     }
43 
44 }

  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 }
原文地址:https://www.cnblogs.com/hebao0514/p/4512014.html