この記事では主に Java におけるタイマーの問題を例とともに紹介します。必要な方は参考にしてください。
タイマーの問題
タイマーは、ユーザー空間のプログラム開発において、基本的なコンポーネントです。カーネル空間では、タイマーが基本コンポーネントとして必要になることがよくあります。タイマーの実装には、タイマーの追加、タイマーのキャンセル、タイマーのチェック、および期限切れの実行という 4 つの基本動作が必要です。
タイマーを設計し、次の 3 つの基本的な動作を実装してください。
プロトタイプが提供されています。データ構造と実装を設計するために の多数のタイマーを効率的にサポートできます。 possible: // タイマーの追加: 特定の時間間隔後にターゲット操作を実行します
// 入力 1: インターバルタイマー時間、単位 ms
// 入力 2: ExpiryAction ターゲット操作
// Return : timer Id
StartTimer(Interval, ExpiryAction) -> TimerId
// タイマーをキャンセル
// 入力: timer Id
StopTimer(TimerId)
// 時間rチェック
/ / システムはこの関数を 10ms ごとに呼び出します
PerTickBookkeeper()
これ以上は説明せずに、コードに直接進みましょう:
1) Timer.java:
import java.util.ArrayList; public class Timer { private long interval; // 定时器时间,单位 ms private String expiryAction; // 目标操作 private int timerId; // 定时器Id private long waitTime; // 定时器等待时间 // 构造函数 public Timer(){ this.waitTime = 0; } // 添加定时器 public int StartTimer(long interval, String expiryAction, int id){ this.interval = interval; this.expiryAction = expiryAction; this.timerId = id; return timerId; } // 取消定时器 public void StopTimer(int timerId, ArrayList<Timer> timer){ timer.remove(timerId); } // 定时器检查 public void PerTickBookkeeping(){ if (this.interval > this.waitTime) this.waitTime += 10; else{ System.out.println("定时器"+this.timerId+":"+this.expiryAction); this.waitTime = 0; } } public long getInterval() { return interval; } public void setInterval(long interval) { this.interval = interval; } public String getExpiryAction() { return expiryAction; } public void setExpiryAction(String expiryAction) { this.expiryAction = expiryAction; } public int getTimerId() { return timerId; } public void setTimerId(int timerId) { this.timerId = timerId; } public long getWaitTime() { return waitTime; } public void setWaitTime(long waitTime) { this.waitTime = waitTime; } }
2) DoTimer . Java:
import java.util.ArrayList; import java.util.Iterator; public class DoTimer extends Thread { private static ArrayList<Timer> timerList; public static void main(String[] args){ timerList = new ArrayList<Timer>(); Timer timer1 = new Timer(); timer1.StartTimer(3000, "我是第一个定时器,等待3秒", 0); Timer timer2 = new Timer(); timer2.StartTimer(4000, "我是第二个定时器,等待4秒", 1); timerList.add(timer1); timerList.add(timer2); //public void run(){} new Thread(){ @Override public void run() { while(true){ Iterator<Timer> it = timerList.iterator(); while(it.hasNext()){ it.next().PerTickBookkeeping(); } try { sleep(10); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }.start(); timer1.StopTimer(timer1.getTimerId(), timerList); } }
「php Programmer Toolbox」バージョンのダウンロード2. Javaの無料ビデオチュートリアル
3. Java アノテーションの包括的な分析以上がJavaでタイマー機能を実装するコードの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。