介绍
计时器可以提供运行基于时间的工作任务的功能,在计时器的管理下,特定的任务可在某一时间运行一次,也可以按指定的时间间隔反复运行。在众多厂商提供的计时器中应用得比较多的有以下三种:
● java.util.Timer
Sun JDK 提供的一种轻量级的计时器。
● Commonj Timer
IBM 和 BEA 联合制定和推出的一种适用于 J2EE 环境的计时器。
● WebSphere Application Server Scheduler
IBM WebSphere Application Server 提供的一种功能强大的计时器。
java.util.Timer
java.util.Timer 是 Sun JDK 提供的一种计时器,用于使后台线程按计划执行指定任务,这些任务可以被执行一次,也可以被定期执行。每个 Timer 对象对应一个后台线程,顺序地执行所有计时器任务。如果完成某个计时器任务的时间太长,那么它会“独占”计时器的任务执行线程,从而可能延迟后续任务的执行。对 Timer 对象最后的引用完成并且所有未处理的任务都已执行完成后,计时器的任务执行线程会正常终止(并且成为垃圾回收的对象)。
java.util.Timer 简单易用,比较适合提供轻量级的计时器功能。由于其创建的线程会超出容器的管理范围,因此不能应用于管理的环境中。如果用户需要在 J2EE 环境中提供计时器功能,可考虑使用后面即将介绍的 Commonj Timer 或 WebSphere Application Server Scheduler。
Commonj Timer
Commonj Timer 是 Commonj 规范的一部分,它由 IBM 和 BEA 联合制定和推出,用以更好的响应客户和独立软件商的需求,给开发人员在开发可移植的服务端应用程序时提供一些更加简单和功能更加强大的方法。这个规范主要包括以下几个部分:Service Component Architecture,Service Data Objects,Work Manager and Timer 和 Enterprise Metadata Discovery。其中,Work Manager and Time 为在应用服务器中支持并发任务的执行提供了一些简单 API。这使用户可以方便地在 Servlet 和 EJB 中执行并发的计划任务,从而提高呑吐量,缩短服务端程序的响应时间,很好地解决了在 J2EE 环境中执行用户自定义的多线程并发与计时器服务的问题。
Commonj Timer API 包括三个接口:TimerManager, Timer 和 TimerListener。应用程序可以通过 TimerManager 来定期调用 TimerListener。每个 TimerManager 的 shcedule 方法返回一个 Timer 对象。用户可以通过 TimerManager 的 JNDI 名称在管理环境的上下文中查找 TimerManager。
java.util.Timer、 CommonJ Timer 和 WebSphere Application Server Scheduler 为用户提供了不同级别的、适用与不同范围的计时器,用户可以根据各自的需求使用不同的计时器,表 1 列出了 java.util.Timer、Commonj Timer 和 WebSphere Application Server Scheduler 之间比较结果,用户在使用计时器时可以用来参照比较。
表 1. 计时器比较结果
java.util.Timer
来源:Sun
优点:易于使用轻量级
缺点:创建的线程会超出容器管理范围
适用范围:非 J2EE 环境
Commonj Timer
来源:BEA and IBM
优点:解决了 java.util.Timer 创建的线程超出容器管理范围的问题;不同于 JMX Timer Service 与 JMX framework 之间的紧耦合,提供了更加友好和独立的 API
缺点:timer 是瞬时的、非事务性的,并且运行于创建它的 JVM 中,不适合于集群环境
适用范围:J2EE 普通环境
java.util.Timer
来源:WebSphere Application Server Scheduler
优点:易于管理 具有持久性和事务性 具有灵活的时间定制方式 具有扩展性,适用于集群环境
缺点:与 WebSphere Application Server 紧耦合
适用范围:J2EE 普通和集群环境
详见:http://www.ibm.com/developerworks/cn/java/j-lo-timer/index.html
Author: orangelizq
email: orangelizq@163.com
posted on 2008-09-05 11:46
桔子汁 阅读(722)
评论(0) 编辑 收藏 所属分类:
J2SE