1 タイマーの役割
実際の開発において、プロジェクトを定期的に実行する必要がある場合や、一定量の作業を繰り返す必要がある場合、タイマーは特に重要です。もちろん、タイマーが理解できない場合は、スレッドを使用して実装します。例:
package org.lzstone.Action
Public class Finance extends thread {
private date; While (true) {
Thread.sleep( (int)(Math.random()*1000));
date = new Date();
}
}
}
タイマーを自分で実装するのは非常に複雑で、メモリを大量に消費します。したがって、スケジュールされたタスクや繰り返しのタスクを処理するにはタイマーが適しています。タイマーの概要
タイマーを使用してスケジュールされたタスクを開発する方法は、主に 2 つのステップに分かれています:
1) タイミング タスク クラスを作成する
サンプル コード:
package org.lzstone.action
import java.util.TimeTask
public class LzstoneTimeTask extends TimeTask{
public void run(){
タスク クラス
サンプル コード:
スケジュールされたタスクを実行するには 2 つの方法があります:
2.1) プログラムは直接開始します
サンプルコード:
パッケージ org.lzstone.action
パブリック クラス LzstoneMain{
…..
public void run(){
// タイマータスクを実行する
// インスタンスを作成する
Timer timer = new Timer() パラメーター:
‐ '' s ‐ ‐‐‐‐‐‐‐‐スケジュールされるタスク。
0 - タスクを実行する前の遅延時間 (単位はミリ秒)。
1*1000 - 後続の各タスクの実行間隔 (ミリ秒単位)。
timer.schedule(new LzstoneTimeTask(),0,1*1000);
}
}
2.2) Web監視メソッド
サンプルコード:
package org.lzstone.action
public class LzstoneMainimplements ServletContextListener{
private Timer timer = null;
use using using using using through using 's out of 's ' through using Servlet サーブレット ‐ ‐ ‐‐‐ timer.schedule(new LzstoneTimeTask(),0,1*1000);
}器 // を破棄します。デバイスを監視し、タスクの実行を停止します
Public Void ContextDestroyed (ServletContext Event) {
// このメソッドは、タイマーと呼ばれるタイマー タスクの RUN メソッドで呼び出されることに注意してください。タスクが実行されていることを確実に確認できます。このタイマーによって実行された最後のタスク。
timer.cancel();
web.xml 設定 }
}
web.xml 設定
org.lzstone.action.LzstoneMain
gt;
Quartz は、ジョブ スケジューリングの分野における OpenSymphony オープン ソース組織のもう 1 つのオープン ソース プロジェクトです。Quartz を使用してスケジュールされたタスクを開発する手順は、タイマーと似ています。クラス
。
Quartz を使用したスケジュールされたタスクの開発は主に 2 つのステップに分かれます:
1) スケジュールされたタスク クラスを作成する
サンプル コード:
package org.lzstone.action
public class LzstoneTimeTaskimplements Job{
public voidexecute(JobExecutionContext context) throws JobExecutionException {行 // タイマータスクを実行中
}}}}2) スケジュールされたタスクを実行します。 スケジュールされたタスクを実行するには 2 つの方法があります:
2.1) プログラムを直接起動し、タスク スケジューラーを作成し、対応するタスク プランを構成します。
サンプル コード:
package org.lzstone.action
public class LzstoneMain{
private static Scheduler sched;
public static void run() throws Exception{
// 目標作成タスクプラン
クロントリガー Trigger = New Crontrigger ("LZSTONETRIGGER", "LZSTONE", "0 0 12 * *?");
// 0 0 12 * *? 毎日の正午に破棄します。
}
//実行
public class Main{
.....
public void run(){
LzstoneMain.run() ....
}
2.2) Webリスニングメソッド
サンプルコード:
package org.lzstone .action
public class LzstoneMainListener は ServletContextListener を実装します{
private Timer timer = null; .stop();
}
}
ウェブ。 XML 設定
org.lzstone.action.LzstoneMainListener
5. タイマーを実装するための
Timer メソッドと比較すると、原理は単純で、実装は簡単です。単純なタスクを実行するには、Quartz メソッドを使用する方が便利ですが、実行時間が決定できないことと、依存関係が比較的強いことが挙げられます。タイミング パラメータはより柔軟です。欠点は、特定のインターフェイスを実装してそのフレームワークをロードする必要があることです。特定の状況におけるそれらの特性。
6. Spring スケジュールされたタスク
Spring スケジュールされたタスクは Timer と Quartz の両方をサポートし、実装手順は基本的に同じです
最初に Spring の Timer サポートを設定します
1.1 スケジュールされたタスク クラスを作成します
パッケージ org.lzstone.action
import java .util .TimeTask
public class LzstoneTimeTask extends TimeTask{
public void run() use ’ using ’s ’ using ’s ‐ を通じて using ‐ ‐‐ ‐‐ ‐‐ を使用して TimerConfig.xml ファイル (通常は applicationContext.xml と呼ばれます) を作成します。 )
<プロパティ名= "Scheduledtimertasks">
;
</beans> class
package org.lzstone.action
public class LzstoneQuartzTask{
Quartz .2 登録タイミング タスク クラス、タスク プランとタスク スケジューラの構成
プロジェクトの WEB-INF の下に QuartzConfig.xml ファイル (通常は applicationContext.xml と呼ばれます) を作成します
< ?xml version="1.0" encoding="UTF-8"?>
< property name="targetObject">
bean>
2.3 Web プロジェクトの起動設定
;listener>
< listener-class>