隨筆-128  評論-55  文章-5  trackbacks-0
          介紹

          計時器可以提供運行基于時間的工作任務(wù)的功能,在計時器的管理下,特定的任務(wù)可在某一時間運行一次,也可以按指定的時間間隔反復(fù)運行。在眾多廠商提供的計時器中應(yīng)用得比較多的有以下三種:

          ● java.util.Timer
          Sun JDK 提供的一種輕量級的計時器。

          ● Commonj Timer
          IBM 和 BEA 聯(lián)合制定和推出的一種適用于 J2EE 環(huán)境的計時器。
           
          ● WebSphere Application Server Scheduler
          IBM WebSphere Application Server 提供的一種功能強大的計時器。


          java.util.Timer

          java.util.Timer 是 Sun JDK 提供的一種計時器,用于使后臺線程按計劃執(zhí)行指定任務(wù),這些任務(wù)可以被執(zhí)行一次,也可以被定期執(zhí)行。每個 Timer 對象對應(yīng)一個后臺線程,順序地執(zhí)行所有計時器任務(wù)。如果完成某個計時器任務(wù)的時間太長,那么它會“獨占”計時器的任務(wù)執(zhí)行線程,從而可能延遲后續(xù)任務(wù)的執(zhí)行。對 Timer 對象最后的引用完成并且所有未處理的任務(wù)都已執(zhí)行完成后,計時器的任務(wù)執(zhí)行線程會正常終止(并且成為垃圾回收的對象)。


          java.util.Timer 簡單易用,比較適合提供輕量級的計時器功能。由于其創(chuàng)建的線程會超出容器的管理范圍,因此不能應(yīng)用于管理的環(huán)境中。如果用戶需要在 J2EE 環(huán)境中提供計時器功能,可考慮使用后面即將介紹的 Commonj Timer 或 WebSphere Application Server Scheduler。



          Commonj Timer

          Commonj Timer 是 Commonj 規(guī)范的一部分,它由 IBM 和 BEA 聯(lián)合制定和推出,用以更好的響應(yīng)客戶和獨立軟件商的需求,給開發(fā)人員在開發(fā)可移植的服務(wù)端應(yīng)用程序時提供一些更加簡單和功能更加強大的方法。這個規(guī)范主要包括以下幾個部分:Service Component Architecture,Service Data Objects,Work Manager and Timer 和 Enterprise Metadata Discovery。其中,Work Manager and Time 為在應(yīng)用服務(wù)器中支持并發(fā)任務(wù)的執(zhí)行提供了一些簡單 API。這使用戶可以方便地在 Servlet 和 EJB 中執(zhí)行并發(fā)的計劃任務(wù),從而提高呑吐量,縮短服務(wù)端程序的響應(yīng)時間,很好地解決了在 J2EE 環(huán)境中執(zhí)行用戶自定義的多線程并發(fā)與計時器服務(wù)的問題。

          Commonj Timer API 包括三個接口:TimerManager, Timer 和 TimerListener。應(yīng)用程序可以通過 TimerManager 來定期調(diào)用 TimerListener。每個 TimerManager 的 shcedule 方法返回一個 Timer 對象。用戶可以通過 TimerManager 的 JNDI 名稱在管理環(huán)境的上下文中查找 TimerManager。



          java.util.Timer、 CommonJ Timer 和 WebSphere Application Server Scheduler 為用戶提供了不同級別的、適用與不同范圍的計時器,用戶可以根據(jù)各自的需求使用不同的計時器,表 1 列出了 java.util.Timer、Commonj Timer 和 WebSphere Application Server Scheduler 之間比較結(jié)果,用戶在使用計時器時可以用來參照比較。

          表 1. 計時器比較結(jié)果
          java.util.Timer
          來源:Sun
          優(yōu)點:易于使用輕量級
          缺點:創(chuàng)建的線程會超出容器管理范圍
          適用范圍:非 J2EE 環(huán)境

          Commonj Timer

          來源:BEA and IBM
          優(yōu)點:解決了 java.util.Timer 創(chuàng)建的線程超出容器管理范圍的問題;不同于 JMX Timer Service 與 JMX framework 之間的緊耦合,提供了更加友好和獨立的 API
          缺點:timer 是瞬時的、非事務(wù)性的,并且運行于創(chuàng)建它的 JVM 中,不適合于集群環(huán)境
          適用范圍:J2EE 普通環(huán)境

          java.util.Timer
          來源:WebSphere Application Server Scheduler
          優(yōu)點:易于管理 具有持久性和事務(wù)性 具有靈活的時間定制方式 具有擴展性,適用于集群環(huán)境
          缺點:與 WebSphere Application Server 緊耦合
          適用范圍:J2EE 普通和集群環(huán)境

          詳見:http://www.ibm.com/developerworks/cn/java/j-lo-timer/index.html


          Author: orangelizq
          email: orangelizq@163.com

          歡迎大家訪問我的個人網(wǎng)站 萌萌的IT人
          posted on 2008-09-05 11:46 桔子汁 閱讀(741) 評論(0)  編輯  收藏 所屬分類: J2SE
          主站蜘蛛池模板: 五原县| 梁山县| 中卫市| 柯坪县| 无锡市| 仪征市| 满城县| 温州市| 买车| 襄垣县| 巴彦淖尔市| 彰武县| 平阴县| 济南市| 微山县| 丹江口市| 南宁市| 都安| 昭苏县| 汉沽区| 温泉县| 福泉市| 大英县| 霍邱县| 无极县| 县级市| 甘谷县| 西安市| 甘孜县| 平陆县| 沾益县| 闸北区| 万州区| 平遥县| 湖北省| 酒泉市| 黔东| 长岭县| 金阳县| 桐梓县| 临泽县|