求问java中的Timer类是一个线程吗?

求问java中的Timer类是一个线程吗?

在 Java 2 SDK, Standard Edition, Version 1.3 中引入这个框架之前,开发人员必须编写自己的调度程序,这需要花费很大精力来处理线程和复杂的 Object.wait() 方法。不过,Java 计时器框架没有足够的能力来满足许多应碧升宏用程序的计划要求。甚至一项需要在每天同一时间重复执行的任务,也不能直接使用 Timer 来计划,因为在夏令时开始和结束时会出现时间跳跃。
本文展示了一个通用的 Timer 和 TimerTask 计划框架,从而允许更灵活的计划任悔册务。这个框架非常简单 ? 它包括两个类和一个接口 ? 并且容易掌握。如果您习惯于使用 Java 定时器框架,那么您应该可以很快地掌握这个计划框架。
计划单次任务
想像一个煮蛋计时器,在数分钟之后(这时蛋煮好了)它会发出声音提醒您。清单 1 中笑猜的代码构成了一个简单的煮蛋计时器的基本结构,它用 Java 语言编写:
清单1. EggTimer 类 package org.tiling.scheduling.examples;
import java.util.Timer;
import java.util.TimerTask;
public class EggTimer {
private final Timer timer = new Timer();
private final int minutes;
public EggTimer(int minutes) {
this.minutes = minutes;}public void start() {
timer.schedule(new TimerTask() {
public void run() {
playSound();
timer.cancel();}private void playSound() {
System.out.println("Your egg is ready!");
// Start a new thread to play a sound...}
}, minutes * 60 * 1000);}public static void main(String[] args) {
eggTimer.start();}}EggTimer 实例拥有一个 Timer 实例,用于提供必要的计划。用 start() 方法启动煮蛋计时器后,它就计划了一个 TimerTask,在指定的分钟数之后执行。时间到了,Timer 就在后台调用 TimerTask 的 start() 方法,这会使它发出声音。在取消计时器后这个应用程序就会中止。
← 上一篇: 下一篇: →