程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> Java入門:Java語言中Timer類的簡潔用法

Java入門:Java語言中Timer類的簡潔用法

編輯:JAVA編程入門知識
所有類型的 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 EggTimer(2); 
         eggTimer.start();
      }
  }
  
  EggTimer 實例擁有一個 Timer 實例,用於提供必要的計劃。用 start() 方法啟動煮蛋計時器後,它就計劃了一個 TimerTask,在指定的分鐘數之後執行。時間到了,Timer 就在後台調用 TimerTask 的 start() 方法,這會使它發出聲音。在取消計時器後這個應用程序就會中止。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved