タイマーの実装、Java タイマー Timer と Quartz の紹介、Spring でのタイマーの設定
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>

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









データベース操作にMyBatis-Plusまたはその他のORMフレームワークを使用する場合、エンティティクラスの属性名に基づいてクエリ条件を構築する必要があることがよくあります。あなたが毎回手動で...

システムドッキングでのフィールドマッピング処理は、システムドッキングを実行する際に難しい問題に遭遇することがよくあります。システムのインターフェイスフィールドを効果的にマッピングする方法A ...

intellijideaultimatiateバージョンを使用してスプリングを開始します...

一部のアプリケーションが適切に機能しないようにする会社のセキュリティソフトウェアのトラブルシューティングとソリューション。多くの企業は、内部ネットワークセキュリティを確保するためにセキュリティソフトウェアを展開します。 ...

Javaオブジェクトと配列の変換:リスクの詳細な議論と鋳造タイプ変換の正しい方法多くのJava初心者は、オブジェクトのアレイへの変換に遭遇します...

さまざまなアーキテクチャCPUでのJavaプログラムのメモリリーク現象の分析。この記事では、JavaプログラムがARMおよびX86アーキテクチャCPUでさまざまなメモリ動作を示すケースについて説明します...

名前を数字に変換してグループ内でソートを実装する方法は?ユーザーをグループでソートする場合、ユーザーの名前を数字に変換して、異なる可能性があることがよくあります...

多くのアプリケーションシナリオでソートを実装するために名前を数値に変換するソリューションでは、ユーザーはグループ、特に1つでソートする必要がある場合があります...
