`
techno_it
  • 浏览: 54603 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java Timer的简单应用

阅读更多

最近由于工作关系,要使用Java中的Timer,从网上的评论得知这个东东并不是很好用,由于需求也不是太苛刻,所以把它改改就OK了。需求是这样的:

  1. .在请求到来时开始计时。
  2. 在请求超过规定时间时,结束计时。
  3. 在得到页面确认时,重置时间,重新开始计时。

需求很简单,下面是我的定时器实现:

java 代码
  1. package com.youcompany.yourproject.comet;   
  2.   
  3. import java.util.Date;   
  4. import java.util.Timer;   
  5. import java.util.TimerTask;   
  6.   
  7. import com.youcompany.yourproject.core.common.Constants;   
  8. import com.youcompany.yourproject.core.common.DFPropertyOwner;   
  9. import com.youcompany.yourproject.core.error.ParameterException;   
  10. import com.youcompany.yourproject.service.JkControlService;   
  11.   
  12. public class CometTimer   
  13. {   
  14.     private final Timer timer = new Timer();    
  15.     private TaskTime myTime = new TaskTime(0,DFPropertyOwner.getKeyNumber("userstate"));   
  16.     public CometTimer()   
  17.     {   
  18.     }   
  19.     public void start(ServerThread thread)    
  20.     {    
  21.         myTime.setService(thread);   
  22.         timer.schedule(myTime,new Date(),Constants.STOPFORQUERY * 1000);   
  23.     }      
  24.     public void restart()   
  25.     {   
  26.         myTime.restart();   
  27.     }   
  28.     private class TaskTime extends TimerTask   
  29.     {   
  30.         private ServerThread service;   
  31.         private int counter = 0;//当前技术值   
  32.         private int all = 0;//计数最大值   
  33.         private boolean isResc = false;//升序还是降,默认升序。   
  34.         @Override  
  35.         public void run()   
  36.         {   
  37.             // TODO Auto-generated method stub   
  38. //          System.out.println("fdsafdsafdsafdsafdsafdsaf");   
  39.             if(this.isResc)   
  40.             {   
  41.                 if((counter--)== 0)   
  42.                 {   
  43.                     doWork();   
  44.                 }   
  45.             }   
  46.             else  
  47.             {   
  48.                 if((this.counter++)== (this.all - 1))   
  49.                 {   
  50.                     doWork();   
  51.                 }   
  52.             }   
  53.         }   
  54.         public void doWork()   
  55.         {   
  56.             System.out.println("User is out of time!!");   
  57.             if(this.service == null)   
  58.             {   
  59.                 throw new ParameterException("name");   
  60.             }   
  61.             else  
  62.             {   
  63.                 JkControlService.leave(service);   
  64.             }   
  65.             timer.cancel();   
  66.         }   
  67.         public  TaskTime(int i , int j)   
  68.         {   
  69.             // TODO Auto-generated method stub   
  70.             this.setAll(j);   
  71.             this.setCounter(i);   
  72.         }      
  73.         /**  
  74.          * 设置初始值  
  75.          * @param i: 初始值  
  76.          * @param j: 技数个数  
  77.          */  
  78.         public  TaskTime(int i , int j,boolean isRESC)   
  79.         {   
  80.             // TODO Auto-generated method stub   
  81.             this.setAll(j);   
  82.             this.setCounter(i);   
  83.             this.setResc(isRESC);   
  84.         }   
  85.         public void setCounter(int counter)   
  86.         {   
  87.             if(counter > 0)   
  88.                 this.counter = counter;   
  89.         }   
  90.         public void setAll(int all)   
  91.         {   
  92.             if(all >this.counter)   
  93.                 this.all = all;   
  94.         }   
  95.         public boolean isResc()   
  96.         {   
  97.             return isResc;   
  98.         }   
  99.         public void restart()   
  100.         {   
  101.             if(this.isResc)   
  102.             {   
  103.                 this.counter = this.all;   
  104.             }   
  105.             else  
  106.             {   
  107.                 this.counter = 0;   
  108.             }   
  109.         }   
  110.         /**  
  111.          * 是否是递减记数。  
  112.          * @param isResc  
  113.          */  
  114.         public void setResc(boolean isResc)   
  115.         {   
  116.                 this.isResc = isResc;   
  117.         }   
  118.         public void setService(ServerThread service)   
  119.         {   
  120.             this.service = service;   
  121.         }   
  122.     }   
  123. }   
此定时器主要是通过一个计数器来实现定时功能,使用计数器主要是因为Java提供的Timer中好象没有重新计时的功能。所以只能使用这种自欺欺人的方法了。如果大家有什么更好发使用Timer的方法,欢迎贴出来大家探讨一下。
分享到:
评论
1 楼 Jatula 2008-09-16  
以前用过一次,但是感觉,做些没用的工作,他真的不错,像打印一句话之类的,很灵,但在里面再个方法处理,马上挂掉;也挺郁闷的;

相关推荐

    java5定时器java Timer

    在实际应用中,`Timer`通常用于实现一些简单的定时操作,比如定期检查数据库连接状态、清理缓存、发送通知等。使用`Timer`时,需要注意以下几点: - 任务执行的精确性:由于系统调度和线程上下文切换的影响,定时...

    java定时任务调度之Timer 简单示例

    在本文中,我们将深入探讨`Timer`类的基本使用和示例,帮助你理解如何在Java程序中实现简单的定时任务。 首先,`Timer`类提供了计划任务的能力,它可以按照预定的时间间隔安排任务执行。创建一个`Timer`对象后,你...

    java-timer的应用

    Java定时器框架包括Timer类和TimerTask类,它们为简单的定时任务提供了便利。然而,对于一些复杂的需求,如任务需要在每天固定时间执行,而要考虑夏令时等因素,标准的Java定时器框架就显得不够灵活。 在Java 2 SDK...

    java中timer用法

    所有类型的 Java 应用程序一般都需要计划重复执行的任务。企业应用程序需要计划每日的日志或者晚间...在本文中,Java 开发人员 Tom White 向您展示了如何构建一个简单通用的计划框架,以用于执行任意复杂的计划任务。

    java 定时器(Timer)

    通过使用Java的Timer类,你可以轻松地在Java应用程序中实现复杂的定时任务调度,无论是简单的延时执行还是周期性的任务循环。结合ActionListener,你可以灵活地控制定时器触发的事件,从而满足各种需求。在实际项目...

    Java--Timer--TimerTask--.rar_java timer

    创建`Timer`对象非常简单,只需调用其构造函数即可: ```java Timer timer = new Timer(); ``` 然后,我们可以使用`schedule`或`scheduleAtFixedRate`方法来安排任务。`schedule`方法用于一次性执行任务,而`...

    小码农的代码(四)----------JAVA中Timer定时器与Spring定时任务

    在Java编程语言中,`Timer`类和Spring框架的定时任务是两种常见的实现定时执行任务的方式。本篇文章将深入探讨这两个主题,旨在帮助初学者理解它们的工作原理以及如何在实际项目中应用。 首先,让我们来看一下Java...

    Java里timer执行定时任务

    总结来说,Java 中的定时任务可以通过 `java.util.Timer` 类来实现简单的定时任务管理。而对于更复杂的应用场景,尤其是需要与Web应用程序交互的情况,则可以考虑使用更高级的定时任务框架和技术。

    java定时器timer制作

    根据给定的信息,本文将详细解析Java定时器的制作及应用,同时对比.NET中的三种不同类型的定时器,以便更好地理解定时任务的实现方式及其特点。 ### Java定时器基础 Java中定时器(Timer)主要用于执行周期性的...

    Timer的简单应用

    总结,`Timer`是Java中实现定时任务的基础工具,虽然相对简单,但在很多场合仍然足够实用。然而,对于更复杂的需求,推荐使用`ScheduledExecutorService`,它提供了更强大的功能和更好的线程管理。理解和熟练使用...

    Java语言中Timer类的简洁用法.doc

    Java中的`Timer`类和`TimerTask`是用于计划任务执行的重要工具,它们在Java标准版(J2SE)和微型版(J2ME)环境中都有应用。然而,这两个类的功能相对有限,不能满足所有复杂任务调度的需求。例如,它们无法处理因...

    Timer简单程序代码

    标题中的“Timer简单程序代码”指的是在编程中使用定时器(Timer)的示例代码。在许多编程语言中,如Java、C#、Python等,都有内置或第三方库提供的Timer类,用于执行特定任务或在预设的时间间隔内触发事件。这类...

    timer定时器(java)

    `Timer`类提供了一种简单有效的方式来执行周期性的任务。通过继承`TimerTask`并重写`run`方法,可以轻松实现各种复杂的定时逻辑。此外,通过使用`SimpleDateFormat`类,可以方便地格式化日期,便于比较和输出。这种...

    简单的timer例子

    总之,这个简单的timer例子是学习Java定时任务调度的一个良好起点。通过掌握`Timer`和`TimerTask`,你可以为应用程序添加延时功能或者定期执行的任务,这对于许多实际场景,如数据同步、定时提醒等都是非常有用的。...

    java定时器Timer

    Java定时器(Timer)是Java.util包中的一个类,它提供了调度任务的能力,可以在特定的延迟后或定期执行。在Java编程中,我们有时需要在指定时间执行某些操作,例如发送提醒、执行清理任务等,这时候Java Timer就派上...

    java_Timer定时器实例_Spring实例

    Java的`Timer`类为开发者提供了一种简单有效的方式来调度定期执行的任务。当与Spring框架结合时,可以进一步增强代码的灵活性和可维护性。通过适当的配置,可以在Web应用的生命周期中自动管理和调度定时任务,从而...

    Java定时器Timer简述共8页.pdf.zip

    Java定时器(Timer)是Java语言中用于调度任务的一个重要工具,它允许程序在特定时间间隔执行预定的任务,或者在指定的时间点执行一次性任务。这个功能对于构建具有定时任务需求的应用程序,如定期数据同步、后台...

    Java-timer-in-the-web-application.rar_The Web

    `Java Timer`类是Java标准库提供的一种简单定时器,可以用于实现定时任务。本篇文章将详细探讨如何在Web应用中使用`Java Timer`来实现定时任务。 首先,`Java Timer`类位于`java.util`包中,它提供了一个定时调度...

    Android Timer Task Demo

    在Android开发中,有时我们需要实现一个定时执行的任务,比如定期检查更新、自动同步数据或执行某种后台服务。...记得在不再需要任务执行时,及时取消`Timer`和`TimerTask`,以保持应用的高效运行。

    JAVA TIMER简单用法学习

    Java Timer 类是一个调度工具,用于计划将来在后台线程中执行的任务。它的主要用途是在给定的时间点或按特定的时间间隔执行任务。Timer 接受一个 TimerTask 的实例作为参数,TimerTask 是一个抽象类,需要子类化并...

Global site tag (gtag.js) - Google Analytics