`
zhangziyangup
  • 浏览: 1082190 次
文章分类
社区版块
存档分类
最新评论

多种计时器的比较与分析

 
阅读更多

介绍

计时器可以提供运行基于时间的工作任务的功能,在计时器的管理下,特定的任务可在某一时间运行一次,也可以按指定的时间间隔反复运行。在众多厂商提供的计时器中应用得比较多的有以下三种:

  • 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 的例子:

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。

用户可以通过以下三步来使用 Commonj Timer:

  1. 在 web.xml 或者 ejb-jar.xml 中增加 Timer 的描述:

3.查找 TimerManager,调用 TimerListener,初始化任务并设置时间:

InitialContext ctx = new InitialContext();
TimerManager mgr = (TimerManager)
	ctx.lookup("java:comp/env/timer/MyTimer");
TimerListener listener =new TestTimerListener ("test");
// 启动计时器
mgr.schedule(listener, 1000*60); 
	

Commonj Timer 提供了一种在 J2EE 环境中使用计时器的方法,它解决了 java.util.Timer 创建的线程超出容器管理范围的问题。由于它不同于 JMX Timer Service 与 JMX framework 之间的紧耦合,从而提供了更加友好和独立的 API。 Commonj Timer API 中的 timer 是瞬时的、非事务性的,并且运行于创建它的 JVM 中,因此对于对持久性、事务性和可恢复性有要求的集群环境并不适合。

IBM WebSphere Application Server Scheduler

IBM WebSphere Application Server Scheduler 是一种功能全面的定时器服务,提供了在 WebSphere Application Server 中配置、管理和开发基于时间的工作任务的功能,能够使 J2EE 操作具有高性能、持久性以及事务性等特征。Scheduler 具有以下优点:

  • 易于管理

    Scheduler 的创建、更新、调度、验证以及监控等任务是 WebSphere Application Server 中的管理控制台进行配置的,可在单个服务器、集群、节点或单元中创建 Scheduler。每个配置后的 Scheduler 拥有唯一的 JNDI 名称、持久存储设备和守护程序。

    图 1. WebSphere Application Server 管理控制台中的 Scheduler 配置面板 图 1. WebSphere Application Server 管理控制台中的 Scheduler 配置面板
  • 具有持久性和事务健壮性

    Scheduler 任务可以通过存入关系数据库的方式被持久化,因此可以保证长期多次的运行。轮询守护程序使用这个数据库来确定哪些任务要运行以及什么时候运行。

  • 具有灵活的时间定制方式

    Scheduler 任务依据用户指定的日历在某一时间开始执行一次或多次任务,用户可根据需要订制自己的日历。

  • 具有扩展性

    当 Scheduler 服务运行于集群环境的时候,可以通过负载均衡管理提高性能和可用性。

    图 2. 集群环境中的 Scheduler 图 2. 集群环境中的 Scheduler

使用 WebSphere Application Server Scheduler 服务可通过以下三个步骤:

  • 在 WebSphere Application Server 管理控制台配置 Scheduler 服务;
  • 开发调用 Scheduler 服务代码;
  • 部署;

Scheduler 服务可由以下两种方式调用:调用会话 Bean 的任务,发送 Java 消息的服务。本文中使用调用会话 Bean 的任务说明如何调用 Scheduler 服务。

  1. 创建一个 EJB 项目用以开发由会话 Bean 实现的任务,在 EJB Module 中创建一个无状态 Session Bean(ScheduledTask),在部署描述符中添加 com.ibm.websphere.scheduler.TaskHandlerHome 和 com.ibm.websphere.scheduler.TaskHandler 作为远程 Home 接口和远程接口。
  2. 实现 ScheduledTask 的 process 方法。
    …
    public void process(TaskStatus status) {
        Date timeValue = new Date();
        System.out.println("In process method, time is " + timeValue.toString());
    }
    …
    	
  3. 在需要调用 Scheduler 服务的方法中查找 Scheduler,创建 BeanTaskInfo 实例并启动 scheduler。

WebSphere Application Server Scheduler 易于管理,具有持久性和事务性,可扩展,可应用于集群环境,为 J2EE 应用提供了功能全面的计时器服务,但由于它与 WebSphere Application Server 的紧耦合关系,降低了它的灵活性,造成了一定的局限。

总结

java.util.Timer、CommonJ Timer 和 WebSphere Application Server Scheduler 为用户提供了不同级别的、适用与不同范围的计时器,用户可以根据各自的需求使用不同的计时器,表 1 列出了 java.util.Timer、Commonj Timer 和 WebSphere Application Server Scheduler 之间比较结果,用户在使用计时器时可以用来参照比较。

表 1. 计时器比较结果

java.util.Timer Commonj Timer WebSphere Application Server Scheduler
来源 Sun BEA and IBM IBM
优点
  • 易于使用
  • 轻量级
  • 解决了 java.util.Timer 创建的线程超出容器管理范围的问题
  • 不同于 JMX Timer Service 与 JMX framework 之间的紧耦合,提供了更加友好和独立的 API
  • 易于管理
  • 具有持久性和事务性
  • 具有灵活的时间定制方式
  • 具有扩展性,适用于集群环境
缺点 创建的线程会超出容器管理范围 timer 是瞬时的、非事务性的,并且运行于创建它的 JVM 中,不适合于集群环境 与 WebSphere Application Server 紧耦合
适用范围 非 J2EE 环境 J2EE 普通环境 J2EE 普通和集群环境
分享到:
评论

相关推荐

    实训项目基于电商售后评论数据的用户情感分析python源码+项目部署说明.zip

    算法优化与提升(比如用不同的包,还可以用多种方法来处理,进行比较分析) 判断优劣coherence/主观判断/通过数据可视化来大致判断,参数优化(主题数/) 找到一个网站据说可以 wordcloud可视化词云 bert情感分类 ...

    基于python的电商产品评论数据情感分析,深度学习,神经网络

    算法优化与提升(比如用不同的包,还可以用多种方法来处理,进行比较分析) 判断优劣coherence/主观判断/通过数据可视化来大致判断,参数优化(主题数/) 找到一个网站据说可以 wordcloud可视化词云 bert情感分类

    基于python的电商产品评论数据情感分析源码+项目说明(课程大作业).zip

    算法优化与提升(比如用不同的包,还可以用多种方法来处理,进行比较分析) 判断优劣coherence/主观判断/通过数据可视化来大致判断,参数优化(主题数/) 找到一个网站据说可以 wordcloud可视化词云 bert情感分类 #...

    基于python的电商买家评论数据情感分析源码+模型+数据集+代码注释(课程大作业).zip

    算法优化与提升(比如用不同的包,还可以用多种方法来处理,进行比较分析) 判断优劣coherence/主观判断/通过数据可视化来大致判断,参数优化(主题数/) 找到一个网站据说可以 wordcloud可视化词云 bert情感分类 #...

    基于python的电商买家评论数据情感分析源码+模型+数据集+代码注释.zip

    运行: `streamlit run ./Comment_analysis/Streamlit/streamlitEXP.py` 分工: ## 必须考虑的点: ...算法优化与提升(比如用不同的包,还可以用多种方法来处理,进行比较分析) 判断优劣co

    多重故障对OSPF收敛性影响的研究

    在本文中,我们分析了存在多个故障时的OSPF收敛行为,其中故障检测与路由计算调度之间的相互作用可能会在收敛过程中产生复杂的动态。 我们还提供了实验研究,以了解多种故障对收敛的影响。 结果表明,多个故障更有...

    Physics_Toolbox_Suite_Pro_v1.9.4.8.apk

    (8)接近计–周期性运动和计时器(计时器和钟摆模式) (9 )标尺–两点之间的距离 (10)磁力计–磁场强度(x,y,z和/或总和);自动校准为(0,0,0); 手动输入警报设置;移动平均值 (11)指南针–磁场方向...

    Apache-JMeter-5.1.1.rar

    1、可链接的取样器允许无限制的测试... 2、内置多种选择方式,负载统计表和可链接的计时器随心挑选;  3、提供数据分析和可视化插件,方便更好的扩展;  4、提供动态输入到测试的功能;  5、支持脚本编程的取样器。

    最新小程序云上考场+ssm.zip

    3. **实时监控与防作弊**:集成考试监控功能,如随机题序、计时器、摄像头监控等,确保考试的公正性。 4. **自动评分与反馈**:考后即时自动评分,快速给出成绩和答案解析,提高评估效率。 5. **数据分析**:提供...

    单片机抢答器的设计

    它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还...

    Toggl按钮:生产力和时间跟踪「Toggl Button: Productivity & Time Tracker」-crx插件

    Toggl计时器也适合您的番茄工作流程与自动提醒。 要查看所有支持的工具列表,请访问https://support.toggl.com/toggl-button-chrome-extension/或https://github.com/toggl/toggl-button 1.点击“添加到Chrome”。 2...

    Office高级应用-第19章 电子相册.pptx

    ;学习目标;案例分析;案例预览;知识要点;制作流程 ;案例实现;;;1.新建文件 (1)单击“文件”下“新建”,在弹出的“新建...(2)在“排练计时”过程中,幻灯片上出现“预演”计时器,记录单张幻灯片排练的时间和排练总

    基础电子中的话说555的由来与特点

    如果要电子爱好者把平时最常见、应用最广泛的集成电路做个排名,那么大名鼎鼎的555时基集成...555被广泛用于各种各样的计时器,脉冲发生器和振荡器等场合。凭借着模数结合的优势,555可以独立构成多种功能电路,且精度

    交通灯信号灯电路设计

    尤其是近几年来,随着电子与计算机技术的飞速发展,电子电路分析和设计方法有了很大的改进,这些为交通灯控制电路的设计提供了一定的技术基础。 因此,在本次课程设计里,将以一种简单实用的交通灯控制系统的硬件...

    嵌入式系统/ARM技术中的小型发电机逆变电源的设计和实现

    中频汽油发电机作为一项重要的电能源,... 单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可

    话说555的由来与特点

    如果要电子爱好者把平时常见、应用广泛的集成电路做个,那么大名鼎鼎的555时基集成...555被广泛用于各种各样的计时器,脉冲发生器和振荡器等场合。凭借着模数结合的优势,555可以独立构成多种功能电路,且精度非常高,

    单片机数据采集课程设计.doc

    前言 单片机的应用简介 单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的 中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器 等功能(可能还包括显示...

    单片机原理与应用技术课程设计报告.doc

    目 录 1 引言 1 2 总体设计方案 1 2.1 设计思路 1 2.1.1方案论证与比较 1 3 设计原理分析 2 3.1计价器的硬件设计 2 3.1.1单片机最小系统单元 2 3.1.2霍尔电路 3 3.1.3掉电存储单元单元电路 3 3.1.4显示单元电路设计...

    单片机篮球计分器设计.doc

    篮球比赛的计时系统由计时器等多种电子设备组成, 同时,根据目前高水平篮球比赛要求,完善的篮球比赛计时系统设备应能够与现场成绩 处理,现场大屏幕,电视转播车等多种设备相联,以便实现高比赛现场感,表演娱乐观...

    MoarVM:为6model对象系统构建的运行时-开源

    亮点包括:强大的Unicode支持,在字形级别表示字符串,对运行代码进行动态分析以识别热门函数和循环,并执行一系列优化,包括类型专门化和内联,对线程的支持,一系列并发控制构造,异步套接字,计时器,进程等,...

Global site tag (gtag.js) - Google Analytics