首页 > PHP资讯 > JAVA培训 > 你不知道的5个Java有用的工具(4)

你不知道的5个Java有用的工具(4)

JAVA培训

4. Timer

java.util.Timer 和 TimerTask 类提供了方便、相对简单的方法可在定期或一次性延迟的基础上执行任务:

清单 10. 稍后执行


import java.util.*;  

public class Later  
{  
    public static void main(String[] args)  
    {  
        Timer t = new Timer("TimerThread");  
        t.schedule(new TimerTask() {  
            public void run() {  
                System.out.println("This is later");  
                System.exit(0);  
            }  
        }, 1 * 1000);  
        System.out.println("Exiting main()");  
    }  
}  

Timer 有许多 schedule() 重载,它们提示某一任务是一次性还是重复的,并且有一个启动的 TimerTask 实例。TimerTask 实际上是一个 Runnable(事实上,它实现了它),但还有另外两个方法:cancel() 用来取消任务,scheduledExecutionTime() 用来返回任务何时启动的近似值。

请注意 Timer 却创建了一个非守护线程在后台启动任务,因此在清单 10 中我需要调用 System.exit() 来取消任务。在长时间运行的程序中,最好创建一个 Timer 守护线程(使用带有指示守护线程状态的参数的构造函数),从而它不会让 VM 活动。

这个类没什么神奇的,但它确实能帮助我们对后台启动的程序的目的了解得更清楚。它还能节省一些 Thread 代码,并作为轻量级 ScheduledExecutorService(对于还没准备好了解整个 java.util.concurrent 包的人来说)。

常州java培训

本文由欣才IT学院整理发布,未经许可,禁止转载。