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

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