java中的定时器

java

  所有类型的 Java 应用程序一般都需要计划重复执行的任务。企业应用程序需要计划每日的日志或者晚间批处理过程。一个 J2SE或者 J2ME 日历应用程序需要根据用户的约定计划闹铃时间。不过,标准的调度类 Timer 和 TimerTask 没有足够的灵活性,无法支持通常需要的计划任务类型.

public class Timer extends Object

一种工具,线程用其安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。与每个 Timer 对象相对应的是单个后台线程,用于顺序地执行所有计时器任务。计时器任务应该迅速完成。如果完成某个计时器任务的时间太长,那么它会“独占”计时器的任务执行线程。

Timer 对象最后的引用完成后,并且 所有未处理的任务都已执行完成后,计时器的任务执行线程会正常终止(并且成为垃圾回收的对象)。但是这可能要很长时间后才发生。默认情况下,任务执行线程并不作为守护线程 来运行,所以它能够阻止应用程序终止。如果调用者想要快速终止计时器的任务执行线程,那么调用者应该调用计时器的 cancel 方法。

如果意外终止了计时器的任务执行线程,例如调用了它的 stop 方法,那么所有以后对该计时器安排任务的尝试都将导致 IllegalStateException,就好像调用了计时器的 cancel 方法一样。

二、构造函数以及主要方法

2.1、构造函数

Timer()
          创建一个新计时器。

Timer(boolean isDaemon)
          创建一个新计时器,可以指定其相关的线程作为守护程序运行。

Timer(String name)
          创建一个新计时器,其相关的线程具有指定的名称。

Timer(String name, boolean isDaemon)
          创建一个新计时器,其相关的线程具有指定的名称,并且可以指定作为守护程序运行。

2.2、主要方法

void schedule(TimerTask task, Date time)
          安排在指定的时间执行指定的任务。

void   schedule(TimerTask task, Date firstTime, long period)
          安排指定的任务在指定的时间开始进行重复的固定延迟执行。

三、简单测试使用

3.1、自定义的MyTimerTask类

 1 package org.timer.test;

2

3 import java.util.Timer;

4 import java.util.TimerTask;

5

6 public class MyTimerTask extends TimerTask {

7

8 @Override

9 public void run() {

10 System.out.println("MyTimerTask---");

11 new Timer().schedule(new MyTimerTask(), 2000);

12 }

13

14 }

3.2、测试类

 1 package org.timer.test;

2

3 import java.util.Date;

4 import java.util.Timer;

5

6 public class TimerTest2 {

7

8 /**

9 * @param args

10 */

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

12

13 new Timer().schedule(new MyTimerTask(), 2000);

14

15

16 while(true){

17 try {

18 Thread.sleep(1000);

19 } catch (InterruptedException e) {

20

21 e.printStackTrace();

22 }

23 System.out.println(new Date().getSeconds());

24 }

25 }

26

27 }

四、测试结果:

MyTimerTask---
59
0
MyTimerTask---
1
2
MyTimerTask---
3
4
MyTimerTask---
5
6
MyTimerTask---
7
8
MyTimerTask---
9
10
MyTimerTask---
11
12
MyTimerTask---
13
14
MyTimerTask---
15
16
MyTimerTask---
17
18
MyTimerTask---
19
20
MyTimerTask---
21
22
MyTimerTask---
23
24
MyTimerTask---
25
26
MyTimerTask---
27
28
MyTimerTask---
29
30
MyTimerTask---
31
32
MyTimerTask---
33

每隔2s打印一次MyTimerTask--,

以上是 java中的定时器 的全部内容, 来源链接: utcz.com/z/392159.html

回到顶部