本文来自:http://hi.baidu.com/fuqilee/blog/item/2d4c810e04df91ee36d122d4.html
java.util.Timer 是 Sun JDK
提供的一种计时器,用于使后台线程按计划执行指定任务,这些任务可以被执行一次,也可以被定期执行。每个 Timer
对象对应一个后台线程,顺序地执行所有计时器任务。如果完成某个计时器任务的时间太长,那么它会“独占”计时器的任务执行线程,从而可能延迟后续任务的执
行。对 Timer
对象最后的引用完成并且所有未处理的任务都已执行完成后,计时器的任务执行线程会正常终止(并且成为垃圾回收的对象)。以下为一个使用
java.util.Timer 的例子:
import java.util.Timer;
import java.util.TimerTask;
public class TimerTest {
Timer timer;
public TimerTest(int seconds) {
timer = new Timer();
timer.schedule(new TimerTestTask(), seconds*1000);
}
class TimerTestTask extends TimerTask {
public void run() {
system.out.println("In TimerTestTask, execute run method.");
timer.cancel();
}
}
public static void main(String args[]) {
system.out.println("Prepare to schedule task.");
new TimerTest(2);
system.out.println("Task scheduled.");
}
}
|
java.util.Timer
简单易用,比较适合提供轻量级的计时器功能。由于其创建的线程会超出容器的管理范围,因此不能应用于管理的环境中。如果用户需要在 J2EE
环境中提供计时器功能,可考虑使用后面即将介绍的 Commonj Timer 或 WebSphere Application server
Scheduler。
分享到:
相关推荐
timer.scheduleAtFixedRate(task, 0, 5000); // 第二个参数为首次执行延迟,第三个参数为周期 ``` 需要注意的是,`Timer`并不是线程安全的,如果你在一个多线程环境中使用同一个Timer实例来调度任务,可能会遇到...
Java.util.ConcurrentModificationException 异常问题详解 ConcurrentModificationException 异常是 Java 中一个常见的异常,它发生在 Iterator 遍历集合时,集合同时被修改引起的异常。在 Java 中,集合类如 ...
标题中提到了“java.util.concurrent.uml.pdf”,这表明文件是一份Java并发编程工具包java.util.concurrent的UML(统一建模语言)类结构图的PDF格式文件。UML图能够帮助开发者理解Java并发包中的类、接口及其关系,...
同时,提及了Timer和TimerTask,它们用于任务调度,这是java.util的一部分,用于在后台线程中安排任务执行。另外,还提到了异常类EmptyStackException和NoSuchElementException,它们分别在Stack类和Enumeration接口...
Java提供了多个类和接口来处理日期和时间,其中`java.util.Date`和`java.sql.Date`是两个经常被混淆和讨论的类,尤其是在数据库编程中。由于这两个类在概念和功能上有所不同,理解它们之间的区别对于编写有效的Java...
Java.util包是Java标准库中的核心包之一,它包含了大量用于日常编程的工具类和接口。这个包在Java 2版本中得到了显著增强,引入了许多重要的数据结构和算法,为Java程序员提供了更丰富的功能。 首先,Java.util包中...
timer.scheduleAtFixedRate(task, 1 * 60 * 1000, 10 * 60 * 1000); } } ``` 在上述例子中,任务将在启动后1分钟首次运行,并每隔10分钟运行一次。`scheduleAtFixedRate()` 方法用于安排周期性的任务执行,第一个...
timer.schedule(new MyTask(), 1000, 2000);//在 1 秒后执行此任务,每次间隔 2 秒 } } ``` 在上面的例子中,我们创建了一个Timer对象,然后使用schedule方法来执行任务。在这个例子中,我们让任务在 1 秒后执行,...
在Java编程语言中,`Timer`类是Java.util包下的一个关键组件,它主要用于调度周期性的任务执行。这个`Timer`类提供了定时器的功能,能够按照预设的时间间隔执行任务,比如更新UI、执行定时检查等。在描述中提到的是...
timer.schedule(task, firstTime, period); // 安排任务 } } ``` **4.1 导入包** 首先,导入了几个必要的包: - `java.util.Calendar`: 提供对日期和时间字段进行操作的方法。 - `java.util.Date`: 表示特定的...
例如,`timer.schedule(TimerTask, 0, 60 * 60 * 1000);`表示每小时执行一次定时任务。 - **监听Web应用生命周期**:通过实现`ServletContextListener`接口并在`contextInitialized`方法中创建并启动定时任务,确保...
timer.schedule(new ShutdownTimer(), delay); } } ``` 然而,`java.util.Timer`并不是线程安全的,因此在多线程环境中可能会出现问题。为了解决这个问题,Java 5引入了`java.util.concurrent....
timer.schedule(thisClass, 60 * 1000); // 60秒后执行Test的run方法 try { thisClass.cirStart(); // 开始循环 } catch (InterruptedException e) { e.printStackTrace(); } } private boolean cirFlg = ...
timer.schedule(new TimerTask() { @Override public void run() { System.out.println("定时任务执行了"); } }, 1000, 2000); // 每隔2秒执行一次 } } ``` 然而,`Timer`类存在一些限制,如它不是线程安全...
timer.scheduleAtFixedRate(task, 0, 5000); } } ``` 然而,`Timer`类有一些局限性,如它不是线程安全的,且如果一个任务执行时间过长,可能会影响其他任务的调度。为了解决这些问题,Java 5引入了`java.util....
timer.schedule(task, 0, 5000); // 每隔5秒执行一次 } } ``` 在这个例子中,`TimerTask`是一个实现了`run`方法的匿名内部类,代表要执行的任务。`schedule`方法的第二个参数是首次执行的延迟,第三个参数是两次...
timer.schedule(new TimerTask() { @Override public void run() { System.out.println("定时任务执行"); } }, 5000); // 延迟5秒执行 } } ``` 使用ScheduledExecutorService的例子: ```java import ...
timer.schedule(new TimerTask() { @Override public void run() { System.out.println("Task executed at " + new Date()); } }, 1000, 2000); // 每隔2秒执行一次 } } ``` 在这个例子中,我们创建了一个...
timer.schedule(new TimerTask() { @Override public void run() { System.out.println("定时任务执行"); } }, 1000, 5000); // 每隔5秒执行一次,首次延迟1秒后开始 } } ``` 然而,`java.util.Timer`在处理...
timer.schedule(new TimerTask() { @Override public void run() { System.out.println("Task executed"); } }, 1000); // 延迟1秒后执行 } } ``` 在这个例子中,`TimerTask`是一个抽象类,我们需要创建它的...