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

Timer与TimerTask入门

阅读更多

Java2的开发包中提供了一种很使用的线程功能:提前安排将来某段时间执行某任务Timer ,TimerTask。
  你可以使用这些类创建后台进程,让其在等待一段规定的时间后执行,或者让其没隔一段时间执行。
  你也可以用Thread来完成,但利用Timer与TimerTask显然省事不少。
  TimerTask实现了Runnable接口,待执行的任务置于run()中。
  Timer是一个安排TimerTask的类此此两者一般一起工作。所应用时首先硬创建一个TimerTask的对象,
  然后用一个Timer的类对象安排执行它
  Timer类包含的方法有:
  1.Timer()
  以常规方式运行task
  2.Timer(boolean)
  true时使用后台进程线程。只要剩下的程序记叙运行,后台进程线程就会执行。
  3.public void cancel()
  终止Timer的功能执行,但不会对正在执行的任务有影响。当执行cancel方法后将不能再用其分配任务。
  4.public void schedule(TimerTask task,Date time)
  task被安排在time指定的时间执行,如果时间为过去时则任务立刻执行。
  5.public void schedule(TimerTask task, Date firstTime, long period)
  task被安排在time指定的时间执行,执行后将每隔period(毫秒)反复执行。由于规定的时间间隔并不能保证与时钟精准的同不步,所以该方
  法最适合从短期看保持频率准确是更重要的的地方
  6.public void schedule(TimerTask task, long delay)
  task被安排在delay(毫秒)指定的时间后执行。
  7.public void schedule(TimerTask task,long delay, long period)
  task被安排在delay(毫秒)指定的时间后执行。执行后将每隔period(毫秒)反复执行。
  8.public void scheduleAtFixedRate(TimerTask task,Date firstTime, long period)
  task被安排在firstTime指定的时间执行。执行后将每隔period(毫秒)反复执行。每一次重复的时间时盒第一次执行而不是和前一次执行有关

。因此执行的总速度是固定的。
  9.public void scheduleAtFixedRate(TimerTask task,long delay,long period)
  task被安排在delay(毫秒)指定的时间后执行。执行后将每隔period(毫秒)反复执行。每一次重复的时间时盒第一次执行而不是和前一次执

行有关。因此执行的总速度是固定的。
  TimerTask的主要方法:
  1.public boolean cancel()
  终止任务的执行运行。如果Timer时要求循环执行的,则如果正在执行,则执行完了就再步会循环。如果还未执行或处于停歇期,则不会执行


  2.public abstract void run()
  3.public long scheduledExecutionTime()
  返回被安排最后执行任务的时间。一般确定任务的当今的实行是否足够及时 ,证明进行被计划的活动为正当:
  public void run() {
       if (System.currentTimeMillis() - scheduledExecutionTime() >=
           MAX_TARDINESS)
               return;  // Too late; skip this execution.
       // Perform the task
   }

  4.protected TimerTask()
例:

java 代码
  1. package com.robin.demo.timertask;   
  2.   
  3. import java.util.Timer;   
  4. import java.util.TimerTask;   
  5.   
  6. public class TimerTaskDemo extends TimerTask {   
  7.        
  8.     String index;   
  9.   
  10.     Timer myTimer = new Timer();   
  11.   
  12.     public TimerTaskDemo(String index) {   
  13.         this.index = index;   
  14.     }   
  15.   
  16.     public void run() {   
  17.         System.out.println(index);   
  18.     }   
  19.   
  20.     /**  
  21.      * @param args  
  22.      */  
  23.     public static void main(String[] args) {   
  24.         TimerTaskDemo myTask1 = new TimerTaskDemo("First task");   
  25.         myTask1.start(0,3);   
  26.         TimerTaskDemo myTask2 = new TimerTaskDemo("Second task");   
  27.         myTask2.start(0,1);   
  28.   
  29.         try{   
  30.             Thread.sleep(6000);   
  31.         }   
  32.         catch(InterruptedException e){               
  33.         }      
  34.            
  35.         myTask1.end();   
  36.         myTask2.end();//程序结束时用cancel()结束Timer   
  37.   
  38.     }   
  39.     public void start(int delay, int internal) {   
  40.         myTimer.schedule(this, delay * 1000, internal * 1000); //利用timer.schedule方法   
  41.     }   
  42.     public void end(){   
  43.         myTimer.cancel();   
  44.     }   
  45. }   
分享到:
评论

相关推荐

    timer+thread 入门,简单封装

    我们平时经常会用到timer,不过将timer放在主线程会加重主线程的负担 所以我们更倾向于使用多线程实现timer,每隔一段时间再通知主线程更新ui 大致思路: 使用thread,run,...使用timer,timerTask实现定时器功能

    java定时器应用 timertask类

    Java定时器应用主要涉及到`Timer`类和`TimerTask`类,这两个类是Java.util包下的,用于实现延时和周期性任务的调度。...但`Timer`和`TimerTask`对于初学者来说是一个很好的入门选择,因为它们的使用相对简单直观。

    java写定时任务,定时任务、定时器详细示例.pdf

    Java中的定时任务是编程中非常常见的一种需求,用于在特定时间执行特定...总的来说,Java的`Timer`和`TimerTask`是入门级的定时任务实现方式,适合简单的定时需求。对于更复杂的应用场景,应考虑使用更专业的定时框架。

    Android 入门经典——编写Android计时器程序

    本文将深入探讨如何编写Android计时器程序,为初学者提供入门指导。 首先,我们需要了解Android应用的基本结构。一个Android应用通常由多个组件组成,如Activity、Service、BroadcastReceiver和ContentProvider。在...

    Eclipse开发J2me手机游戏入门教程

    J2ME还提供了一个定时器机制(Timer和TimerTask),用于实现游戏循环和动画效果。 在编写游戏逻辑时,理解面向对象编程(OOP)概念至关重要。游戏中的角色、场景、物理规则等可以抽象为类,通过继承和多态性实现...

    java入门练手游戏项目,仿天天酷跑,适合巩固java基础.zip

    Java的Timer和TimerTask类可以用于实现定时更新和动画帧的调度。 7. **文件I/O**:游戏可能需要保存和加载玩家进度,这就涉及到文件读写操作。Java的File、InputStream和OutputStream类是实现这一功能的基础。 8. ...

    java做的显示时间

    3. **定时任务**:通过`Timer`和`TimerTask`类实现每秒自动更新时间。 #### 二、核心代码解析 ##### 1. 导入包及类 ```java package thread; // 应该是包名,但这里命名为“thread”可能会导致与其他包冲突 ...

    JS,java,jsp......我的经验部分积累

    4. **Java Web中的Timer应用**:"Java Web中 Timer应用.doc"和"Java 类Timer和TimerTask的使用.doc"可能讨论了Java的定时器功能,这在需要周期性任务执行的场景中非常有用,例如后台数据刷新、定时发送邮件等。...

    基于linux操作系统的J2ME动画制作入门.pdf

    4. **计时器**:通过定时器更新动画,例如使用`javax.microedition.midlet.Timer`和`javax.microedition.midlet.TimerTask`。 5. **状态管理**:在J2ME中,应用程序通常由多个状态组成,如主菜单、游戏进行中、暂停...

    java 拿火柴游戏

    * Java 的 Util 包中的 Stack 类、Timer 类、TimerTask 类的使用方法 * Java 的 Swing 包中的窗口类、按钮类、标签类、面板类、复选框类等一些常用组件的用法 * 通过这些组件来掌握事件监听器的用法、Java 中栈的...

    基于J2ME平台的手机游戏开发--颜色方块游戏

    为了实现游戏逻辑,我们需要使用到J2ME的时间管理机制,比如Timer和TimerTask。通过设置定时器,我们可以控制游戏的节奏,例如方块的下落速度或者玩家的操作间隔。同时,我们需要编写碰撞检测算法,检测方块与屏幕...

    SSM框架简易搭建(前端easyui)

    6. **定时器(Timer)**:在Java中,可以使用java.util.Timer和TimerTask类来实现定时任务。在SSM项目中,如果需要定期执行某些任务,如数据清理、统计分析等,可以借助Spring的TaskScheduler或者Quartz等第三方库来...

    飞机大战源码

    JAVA的java.util.Timer和TimerTask类可以用来安排定时任务。 3. 数据持久化:如果游戏有得分系统,那么得分数据需要保存。JAVA提供了文件I/O操作,如FileWriter和BufferedWriter,可以将得分写入文件,实现数据持久...

    Android多线程全新讲解[整理].pdf

    `Timer`类用于创建定时任务,而`TimerTask`是定义定时任务的类。例如,以下代码每隔2秒执行一次任务,然后在下一次执行时间隔4秒,再接着每隔2秒,如此循环: ```java public static void main(String[] args) { ...

    j2me实例大全

    - **成员变量**:包括一个布尔标志 `started` 用于标记 `startApp()` 方法是否首次被调用、一个 `Thread` 对象 `thread` 用于后台线程处理、一个 `Timer` 对象 `timer` 以及一个 `TimerTask` 对象 `task` 用于定时...

    Java初学示例(源代码+详细注释)

    4. **定时任务**:`timerTask`示例可能使用了`java.util.Timer`和`TimerTask`类来执行定时任务。这两个类允许程序在指定的时间间隔执行特定任务,常用于后台服务或定时提醒等功能。 5. **卡片布局管理器**:`...

    J2ME 坦克大战 源代码

    2. 时间管理:通过定时器(Timer)和定时器任务(TimerTask)实现游戏的帧率控制,确保游戏流畅运行。 3. 碰撞检测:通过比较坦克和地图、子弹的坐标,判断是否发生碰撞,通常采用矩形碰撞检测法。 4. 状态管理:...

    面向初学者的手机游戏编程:第2部分(共4部分)

    3. 时间管理:为了实现动态游戏,需要使用Timer和TimerTask类来控制游戏循环和动画帧率。 五、砖块破坏者游戏 "brickbreaker.zip"可能包含一个砖块破坏者的示例代码。这个经典的弹球游戏通常包括一个球和一个挡板,...

    开源框架 Spring Gossip

    <br>AOP 入门 AOP 的观念与术语都不是很直觉,可以先从代理机制(Spring 实现 AOP 的一种方式)来看看实际的例子,从而了解 AOP 的观念与各种术语。 从代理机制初探 AOP 动态代理 <br>AOP 观念与...

Global site tag (gtag.js) - Google Analytics