Android (java) 학습 노트 76: 다 중 스 레 드 - 타이머 개요 및 사용

14994 단어 android
타이머:
타 이 머 는 매우 광범 위 하 게 응용 되 는 스 레 드 도구 로 여러 개의 정시 작업 을 예약 한 후에 스 레 드 를 실행 할 수 있 습 니 다.
자바 에 서 는 Timer 와 Timer Task 류 를 통 해 스케줄 링 을 정의 하 는 기능 을 수행 할 수 있 습 니 다.
Timer
public Timer()
public void schedule(TimerTask task, long delay)
public void schedule(TimerTask task,long delay,long period)
 
Timer Task --- 추상 류
public abstract void run()
public boolean cancel()
 
개발 중 Quartz 는 완전히 자바 가 작성 한 오픈 소스 스케줄 링 프레임 워 크 입 니 다.
 
다음은 코드 예제 에 대한 설명 입 니 다.
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 }

 

좋은 웹페이지 즐겨찾기