服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

java入门:java语言中timer类的简洁用法

所有类型的 java 应用程序一般都需要计划重复执行的任务。企业应用程序需要计划每日的日志或者晚间批处理过程。一个 j2se 或者 j2me 日历应用程序需要根据用户的约定计划闹铃时间。不过,标准的调度类 timer 和 timertask 没有足够的灵活性,无法支持通常需要的计划任务类型。在本文中,java 开发人员 tom white 向您展示了如何构建一个简单通用的计划框架,以用于执行任意复杂的计划任务。

把 java.util.timer 和 java.util.timertask 统称为 java 计时器框架,它们使程序员可以很容易地计划简单的任务(注意这些类也可用于 j2me 中)。在 java 2 sdk, standard edition, version 1.3 中引入这个框架之前,开发人员必须编写自己的调度程序,这需要花费很大精力来处理线程和复杂的 object.wait() 方法。不过,java 计时器框架没有足够的能力来满足许多应用程序的计划要求。甚至一项需要在每天同一时间重复执行的任务,也不能直接使用 timer 来计划,因为在夏令时开始和结束时会出现时间跳跃。

本文展示了一个通用的 timer 和 timertask 计划框架,从而允许更灵活的计划任务。这个框架非常简单 ?? 它包括两个类和一个接口 ?? 并且容易掌握。如果您习惯于使用 java 定时器框架,那么您应该可以很快地掌握这个计划框架。

计划单次任务

计划框架建立在 java 定时器框架类的基础之上。因此,在解释如何使用计划框架以及如何实现它之前,我们将首先看看如何用这些类进行计划。

想像一个煮蛋计时器,在数分钟之后(这时蛋煮好了)它会发出声音提醒您。清单 1 中的代码构成了一个简单的煮蛋计时器的基本结构,它用 java 语言编写:

清单 1. eggtimer 类

package org.tiling.scheduling.examples;
import java.util.timer;
import java.util.timertask;
public class eggtimer {   
    private final timer timer = new timer();
    private final int minutes;
    public eggtimer(int minutes) { 
       this.minutes = minutes;
    }
    public void start() { 
       timer.schedule(new timertask() { 
           public void run() { 
               playsound(); 
               timer.cancel();
            } 
           private void playsound() { 
               system.out.println("your egg is ready!");
                // start a new thread to play a sound...
            } 
       }, minutes * 60 * 1000);
    } 
   public static void main(string[] args) { 
       eggtimer eggtimer = new eggtime

扫描关注微信公众号