javaTimer使用技巧
来源:技术人生 责任编辑:栏目编辑 发表时间:2013-07-01 18:40 点击:次
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() 用来取
清单 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 守护线程(使用带有指示守护线程状态的参数的构造
请注意 Timer 却创建了一个非守护线程在后台启动任务,因此在清单 10 中我需要调用 System.exit() 来取消任务。在长时间运行的程序中,最好创建一个 Timer 守护线程(使用带有指示守护线程状态的参数的构造
函数),从而它不会让 VM 活动。
这个类没什么神奇的,但它确实能帮助我们对后台启动的程序的目的了解得更清楚。它还能节省一些 Thread 代码,并作为轻量级 ScheduledExecutorService(对于还没准备好了解整个 java.util.concurrent 包的人
这个类没什么神奇的,但它确实能帮助我们对后台启动的程序的目的了解得更清楚。它还能节省一些 Thread 代码,并作为轻量级 ScheduledExecutorService(对于还没准备好了解整个 java.util.concurrent 包的人
来说)。
相关新闻>>
- 发表评论
-
- 最新评论 更多>>