介紹
計時器可以提供運行基于時間的工作任務的功能,在計時器的管理下,特定的任務可在某一時間運行一次,也可以按指定的時間間隔反復運行。在眾多廠商提供的計時器中應用得比較多的有以下三種:
● 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
桔子汁 閱讀(730)
評論(0) 編輯 收藏 所屬分類:
J2SE