`
yianpuodiaotu
  • 浏览: 241614 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

周期性的操作:使用java.util.Timer

阅读更多

转自: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)
   }
  }
 ...
 }
} 

 

分享到:
评论

相关推荐

    java.util.timer实现的简单定时任务

    它允许开发者在指定的时间间隔或特定时间点执行任务,非常适合处理一次性或周期性的后台操作。本篇文章将深入探讨如何使用Timer和TimerTask来实现简单的定时任务。 首先,`java.util.Timer`是一个线程类,它维护了...

    java.util.pdf

    可以使用Timer安排单次执行或周期性执行的任务。TimerTask是一个抽象类,需要被扩展以创建一个特定的任务。Timer和TimerTask组合为一个简单的调度器,适合安排不频繁的任务调度。 **TimeZone类**: TimeZone类代表...

    java.util包总结

    13. Timer和TimerTask:定时任务调度,可以安排一次或周期性的任务执行。 14. Bitset:位集,用于高效存储和操作位标志。 15. Iterator和ListIterator:迭代器接口,用于遍历集合中的元素,ListIterator还支持双向...

    java.util.concurrent.uml.pdf

    标题中提到了“java.util.concurrent.uml.pdf”,这表明文件是一份Java并发编程工具包java.util.concurrent的UML(统一建模语言)类结构图的PDF格式文件。UML图能够帮助开发者理解Java并发包中的类、接口及其关系,...

    使用java.util.Timer实现任务调度

    `scheduleAtFixedRate()` 方法用于安排周期性的任务执行,第一个参数是 `TimerTask` 对象,第二个参数是首次执行的延迟时间(以毫秒为单位),第三个参数是后续执行的间隔时间。 结合Web应用的上下文,如描述中提到...

    Timer-java.rar_java timer_timer_timer java

    在Java编程语言中,`Timer`类是Java.util包下的一个关键组件,它主要用于调度周期性的任务执行。这个`Timer`类提供了定时器的功能,能够按照预设的时间间隔执行任务,比如更新UI、执行定时检查等。在描述中提到的是...

    定时器Timer实例.rar

    如果想要任务周期性执行,我们可以使用`scheduleAtFixedRate()`或`scheduleWithFixedDelay()`方法。例如,每2秒执行一次任务: ```java timer.scheduleAtFixedRate(task, 0, 2000); // 从现在开始,每隔2秒执行 ...

    java定时执行代码.

    它支持定时执行、周期性执行以及延时执行。ScheduledExecutorService可以通过`Executors`类的静态工厂方法创建,如`Executors.newScheduledThreadPool(int corePoolSize)`。它的主要方法有: - `schedule(Runnable ...

    timer定时器(java)

    `TimerTask`类继承自`java.util.TimerTask`抽象类,这个类提供了执行周期性任务的能力。在这个例子中,我们定义了一个名为`TimerTask`的新类,并覆盖了`run`方法。 4. **覆盖`run`方法**: ```java @Override ...

    schedule

    通过上述内容,我们不仅了解了如何在Java中使用`java.util.Timer`和`java.util.TimerTask`来实现定时任务,而且还学习了如何在Web应用中利用这些工具来完成周期性的任务。这种方法特别适用于需要定期执行某些操作的...

    java时间控制代码

    在Java编程中,经常需要对程序的执行时间进行精确控制,例如定时任务、周期性操作等场景。本文将通过一个具体的示例来详细介绍如何利用`java.util.Date`和`java.util.Timer`类实现线程的运行时间控制。 #### 二、...

    Spring 使用Timer quartz区别

    首先,`java.util.Timer` 是Java标准库中的一个简单定时器类,它适合于执行一次或周期性的简单任务。`Timer` 的工作原理是通过创建一个后台线程,当设定的时间到达时,它会调度任务进行执行。然而,`Timer` 有一些...

    java中的定时器,定时访问某程序等

    2. `scheduleAtFixedRate(TimerTask task, long initialDelay, long period)`:这个方法会周期性地执行任务,首次执行在初始延迟后开始,后续执行间隔为固定的时间周期。 下面是一个简单的示例,展示如何使用`Timer...

    java定时关机源码

    总结一下,Java定时关机源码主要涉及了Java的定时任务处理,可以使用`java.util.Timer`或`java.util.concurrent.ScheduledExecutorService`来实现。通过这两个工具,开发者可以设置在特定时间执行关闭系统的任务,...

    Java里timer执行定时任务

    此外,还可以结合周期性执行的需求,使用以下方法签名: ```java public void schedule(TimerTask task, Date firstTime, long period) ``` 这种方法允许指定首次执行的确切时间和后续执行的周期性间隔。 #### 四...

    java定时器(timer类使用详解)

    - **周期性任务**:使用`schedule(TimerTask task, long initialDelay, long period)`方法,`initialDelay`表示首次执行的延迟时间,`period`表示两次执行之间的间隔时间。 ```java timer.schedule(task, 1000, ...

    Java Timer:schedule和scheduleAtFixedRate

    在 `TimerSchedueAndScheduleAtFixRate2.java` 文件中,可能使用了 `scheduleAtFixedRate` 方法来安排一个周期性的任务,比如定时检查系统状态、更新缓存或者发送定期报告。这个方法会确保任务按照固定的频率执行,...

    java 数字定时器

    Java 数字定时器是Java编程中用于执行周期性任务的重要工具。它可以帮助开发者在特定的时间间隔内执行预定的代码块,比如更新UI、执行后台任务或者进行数据同步等。Java中实现数字定时器的主要方式有两种:`java....

    java定时执行方法&节拍器

    最基础的是使用`java.util.Timer`类和`java.util.TimerTask`类。`Timer`类用于创建一个定时调度线程,而`TimerTask`则代表要定时执行的任务。以下是一个简单的例子: ```java import java.util.Timer; import java....

Global site tag (gtag.js) - Google Analytics