转自:piky2004的专栏
在应用开发中,经常需要一些周期性的操作,比如每5分钟检查一下新邮件等。对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。比如下面的代码每5分钟检查一遍是否有新邮件:
private java.util.Timer timer;
timer = new Timer(true);
timer.schedule(
new java.util.TimerTask() { public void run() { //server.checkNewMail(); 检查新邮件 } }, 0, 5*60*1000);
使用这几行代码之后,Timer本身会每隔5分钟调用一遍server.checkNewMail()方法,不需要自己启动线程。Timer本身也是多线程同步的,多个线程可以共用一个Timer,不需要外部的同步代码。
在《The Java Tutorial》中有更完整的例子:
public class AnnoyingBeep { T
oolkit toolkit;
Timer timer;
public AnnoyingBeep() {
toolkit = Toolkit.getDefaultToolkit();
timer = new Timer();
timer.schedule(new RemindTask(), 0, //initial delay 1*1000); //subsequent rate
}
class RemindTask extends TimerTask {
int numWarningBeeps = 3;
public void run() {
if (numWarningBeeps > 0) {
toolkit.beep();
System.out.println("Beep!");
numWarningBeeps--;
}
else {
toolkit.beep();
System.out.println("Time´s up!");
//timer.cancel(); //Not necessary because we call System.exit System.exit(0);
//Stops the AWT thread (and everything else)
}
}
}
...
}
这段程序,每隔3秒响铃一声,并打印出一行消息。循环3次。程序输出如下:
Task scheduled.
Beep!
Beep! //one second after the first beep
Beep! //one second after the second beep
Time´s up! //one second after the third beep
Timer类也可以方便地用来作为延迟执行,比如下面的代码延迟指定的时间(以秒为单位)执行某操作。类似电视的延迟关机功能。
public class ReminderBeep {
public ReminderBeep(int seconds) {
toolkit = Toolkit.getDefaultToolkit();
timer = new Timer();
timer.schedule(new RemindTask(), seconds*1000);
}
class RemindTask extends TimerTask {
public void run() {
System.out.println("Time´s up!");
toolkit.beep();
//timer.cancel(); //Not necessary because we call System.exit System.exit(0);
//Stops the AWT thread (and everything else)
}
}
...
}
}
分享到:
相关推荐
它允许开发者在指定的时间间隔或特定时间点执行任务,非常适合处理一次性或周期性的后台操作。本篇文章将深入探讨如何使用Timer和TimerTask来实现简单的定时任务。 首先,`java.util.Timer`是一个线程类,它维护了...
可以使用Timer安排单次执行或周期性执行的任务。TimerTask是一个抽象类,需要被扩展以创建一个特定的任务。Timer和TimerTask组合为一个简单的调度器,适合安排不频繁的任务调度。 **TimeZone类**: TimeZone类代表...
13. Timer和TimerTask:定时任务调度,可以安排一次或周期性的任务执行。 14. Bitset:位集,用于高效存储和操作位标志。 15. Iterator和ListIterator:迭代器接口,用于遍历集合中的元素,ListIterator还支持双向...
标题中提到了“java.util.concurrent.uml.pdf”,这表明文件是一份Java并发编程工具包java.util.concurrent的UML(统一建模语言)类结构图的PDF格式文件。UML图能够帮助开发者理解Java并发包中的类、接口及其关系,...
`scheduleAtFixedRate()` 方法用于安排周期性的任务执行,第一个参数是 `TimerTask` 对象,第二个参数是首次执行的延迟时间(以毫秒为单位),第三个参数是后续执行的间隔时间。 结合Web应用的上下文,如描述中提到...
在Java编程语言中,`Timer`类是Java.util包下的一个关键组件,它主要用于调度周期性的任务执行。这个`Timer`类提供了定时器的功能,能够按照预设的时间间隔执行任务,比如更新UI、执行定时检查等。在描述中提到的是...
如果想要任务周期性执行,我们可以使用`scheduleAtFixedRate()`或`scheduleWithFixedDelay()`方法。例如,每2秒执行一次任务: ```java timer.scheduleAtFixedRate(task, 0, 2000); // 从现在开始,每隔2秒执行 ...
它支持定时执行、周期性执行以及延时执行。ScheduledExecutorService可以通过`Executors`类的静态工厂方法创建,如`Executors.newScheduledThreadPool(int corePoolSize)`。它的主要方法有: - `schedule(Runnable ...
`TimerTask`类继承自`java.util.TimerTask`抽象类,这个类提供了执行周期性任务的能力。在这个例子中,我们定义了一个名为`TimerTask`的新类,并覆盖了`run`方法。 4. **覆盖`run`方法**: ```java @Override ...
通过上述内容,我们不仅了解了如何在Java中使用`java.util.Timer`和`java.util.TimerTask`来实现定时任务,而且还学习了如何在Web应用中利用这些工具来完成周期性的任务。这种方法特别适用于需要定期执行某些操作的...
在Java编程中,经常需要对程序的执行时间进行精确控制,例如定时任务、周期性操作等场景。本文将通过一个具体的示例来详细介绍如何利用`java.util.Date`和`java.util.Timer`类实现线程的运行时间控制。 #### 二、...
首先,`java.util.Timer` 是Java标准库中的一个简单定时器类,它适合于执行一次或周期性的简单任务。`Timer` 的工作原理是通过创建一个后台线程,当设定的时间到达时,它会调度任务进行执行。然而,`Timer` 有一些...
2. `scheduleAtFixedRate(TimerTask task, long initialDelay, long period)`:这个方法会周期性地执行任务,首次执行在初始延迟后开始,后续执行间隔为固定的时间周期。 下面是一个简单的示例,展示如何使用`Timer...
总结一下,Java定时关机源码主要涉及了Java的定时任务处理,可以使用`java.util.Timer`或`java.util.concurrent.ScheduledExecutorService`来实现。通过这两个工具,开发者可以设置在特定时间执行关闭系统的任务,...
此外,还可以结合周期性执行的需求,使用以下方法签名: ```java public void schedule(TimerTask task, Date firstTime, long period) ``` 这种方法允许指定首次执行的确切时间和后续执行的周期性间隔。 #### 四...
- **周期性任务**:使用`schedule(TimerTask task, long initialDelay, long period)`方法,`initialDelay`表示首次执行的延迟时间,`period`表示两次执行之间的间隔时间。 ```java timer.schedule(task, 1000, ...
在 `TimerSchedueAndScheduleAtFixRate2.java` 文件中,可能使用了 `scheduleAtFixedRate` 方法来安排一个周期性的任务,比如定时检查系统状态、更新缓存或者发送定期报告。这个方法会确保任务按照固定的频率执行,...
Java 数字定时器是Java编程中用于执行周期性任务的重要工具。它可以帮助开发者在特定的时间间隔内执行预定的代码块,比如更新UI、执行后台任务或者进行数据同步等。Java中实现数字定时器的主要方式有两种:`java....
最基础的是使用`java.util.Timer`类和`java.util.TimerTask`类。`Timer`类用于创建一个定时调度线程,而`TimerTask`则代表要定时执行的任务。以下是一个简单的例子: ```java import java.util.Timer; import java....