`
jacally
  • 浏览: 769382 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用java.util.Timer [转]

阅读更多

在应用开发中,经常需要一些周期性的操作,比如每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 
    Toolkit 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) 
        }
 
    }
 
     
}
 


 



Lib 2007-01-22 17:43 发表评论
分享到:
评论

相关推荐

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

    Java.util.Timer类是Java标准库提供的一种简单但功能有限的定时任务执行机制。它允许开发者在指定的时间间隔或特定时间点执行任务,非常适合处理一次性或周期性的后台操作。本篇文章将深入探讨如何使用Timer和...

    java.util.ConcurrentModificationException 异常问题详解1

    Java.util.ConcurrentModificationException 异常问题详解 ConcurrentModificationException 异常是 Java 中一个常见的异常,它发生在 Iterator 遍历集合时,集合同时被修改引起的异常。在 Java 中,集合类如 ...

    java.util.pdf

    同时,提及了Timer和TimerTask,它们用于任务调度,这是java.util的一部分,用于在后台线程中安排任务执行。另外,还提到了异常类EmptyStackException和NoSuchElementException,它们分别在Stack类和Enumeration接口...

    java.sql.date与java.util.date.pdf

    `java.sql.Date`类还提供了`getTime()`和`setTime(long millis)`方法,允许与`java.util.Date`对象进行互转。 例如,如果你有一个`java.util.Date`对象,并需要将其用于SQL语句,你可以使用`java.sql.Date.valueOf...

    java.util.concurrent.uml.pdf

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

    java.util包总结

    Java.util包是Java标准库中的核心包之一,它包含了大量用于日常编程的工具类和接口。这个包在Java 2版本中得到了显著增强...通过熟练掌握和使用java.util包中的类和接口,开发者能够更加高效地处理数据和实现复杂逻辑。

    Timer-java.rar_java timer_timer_timer java

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

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

    它与 `java.util.TimerTask` 类配合使用,`TimerTask` 是一个抽象类,代表要定时执行的任务。下面我们将深入探讨这两个类以及如何使用它们实现任务调度。 1. **Timer类**: - `Timer` 类是一个线程类,它创建一个...

    java timer定时器详解(附详细代码)

    Java Timer定时器详解 Java Timer定时器是Java语言中的一种常用的定时器机制,它可以帮助开发者实现一些需要在特定时间或...通过使用java.util.Timer和java.util.TimerTask两个类,开发者可以轻松地实现定时器的功能。

    java定时器代码

    它使用`java.util.TimerTask`作为任务的具体实现类,通过`Timer`调度`TimerTask`来完成定时任务的执行。 #### 三、`java.util.Timer`与`java.util.TimerTask`详解 ##### 3.1 `java.util.Timer` `Timer`类是Java...

    schedule

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

    Java计时器Timer和TimerTask用法总结

    在 timer.schedule() 方法中,我们指定了执行任务的时间点为 3000 毫秒。 整合 JFrame 在实际应用中,我们可能需要将 Timer 和 TimerTask 与 GUI 组件整合,以实现实时显示时间的效果。下面是一个示例代码: ```...

    java在服务启动的时候启动定时器

    在Java中,我们可以使用多种库来实现这个功能,其中最常用的两个是`java.util.Timer`和`java.util.concurrent.ScheduledExecutorService`。 ## 1. `java.util.Timer` `Timer`类是Java标准库中的一个基础定时器,...

    java定时任务

    java提供了多种方式来实现定时任务,包括使用java.util.Timer和java.util.TimerTask类、使用java.lang.Thread类的sleep方法、使用java.util.concurrent.ScheduledExecutorService类等。 在本例子中,使用的是java....

    java定时执行代码.

    timer.schedule(new TimerTask() { @Override public void run() { System.out.println("定时任务执行"); } }, 5000); // 延迟5秒执行 } } ``` 使用ScheduledExecutorService的例子: ```java import ...

    java SE API

    java.util.concurrent.atomic java.util.concurrent.locks java.util.jar java.util.logging java.util.prefs java.util.regex java.util.zip javax.accessibility javax.activity javax.crypto javax....

    java定时关机源码

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

    java定时执行方法&节拍器

    timer.schedule(new TimerTask() { @Override public void run() { System.out.println("定时任务执行了"); } }, 1000, 2000); // 每隔2秒执行一次 } } ``` 然而,`Timer`类存在一些限制,如它不是线程安全...

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

    timer.scheduleAtFixedRate(task, 0, 5000); } } ``` 然而,`Timer`类有一些局限性,如它不是线程安全的,且如果一个任务执行时间过长,可能会影响其他任务的调度。为了解决这些问题,Java 5引入了`java.util....

    java时间控制代码

    timer.schedule(thisClass, 60 * 1000); // 60秒后执行Test的run方法 try { thisClass.cirStart(); // 开始循环 } catch (InterruptedException e) { e.printStackTrace(); } } private boolean cirFlg = ...

Global site tag (gtag.js) - Google Analytics