CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

在java中有没有计时器

楼主popularboy1wbr(popularboy1wbr)2003-07-04 11:55:32 在 Java / J2SE / 基础类 提问

我想实现一个计时器,每隔多少秒执行某项任务,但不知道java中有没有现成的计时器  
   
  谢谢了 问题点数:10、回复次数:2Top

1 楼XKP(低等下人)回复于 2003-07-04 11:58:21 得分 0

timerTop

2 楼XKP(低等下人)回复于 2003-07-04 12:01:47 得分 10

在应用开发中,经常需要一些周期性的操作,比如每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   JavaTutorial》中有更完整的例子:  
   
  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)  
  }  
  }  
  ...  
   
  }Top

相关问题

  • java中有没有计时器?
  • 能否在dll中建立计时器?
  • B/S中计时器怎么实现?
  • 在单件中使用计时器
  • 请问SQLSERVER中有没有计时器功能的东东,使某动作每隔一分钟执行一次?
  • 怎样在java里设计一个计时器
  • 计时器中INTERVAL的值1000等于多少秒?
  • C++ 中计时器及时间动态显示的问题
  • 线程函数中如何实现计时器?
  • 如何在一个对话框中使用多个计时器

关键词

  • toolkit
  • 代码
  • 延迟
  • 检查
  • 执行
  • 邮件
  • timer
  • 计时器
  • remindtask
  • beep

得分解答快速导航

  • 帖主:popularboy1wbr
  • XKP

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo