quartz
spring
spring-task
タイミングタスク
Notes
Springタイミングタスクのいくつかの実装
最近、初期の分析など、いくつかのタイミングタスクをプロジェクト開発中に実行する必要があります。毎日朝この機会に、スケジュールされたタスクを実装するためのいくつかの方法を整理しました。プロジェクトでは Spring フレームワークを使用しているため、
Spring フレームワークと併せて紹介します。
1.分類
実装テクノロジーの観点から分類すると、現在 3 つの主要なテクノロジー (または 3 つの製品) があります:
Java 独自の java.util.Timer クラス。このクラスを使用すると、 java.util.TimerTask タスクをスケジュールできます。この方法を使用すると、指定した時間ではなく、特定の頻度でプログラムを実行できます。一般的にはあまり使われないので、この記事では詳しく紹介しません。
Quartz を使用します。これは、プログラムを指定した時間または頻度で実行できるようにする、比較的強力なスケジューラーです。構成は少し複雑なので、後で詳しく紹介します。
Spring 3.0 以降に付属するタスクは軽量の Quartz とみなすことができ、後で紹介する Quartz よりもはるかに簡単に使用できます。
ジョブクラスの継承方法に関しては、次の 2 つのカテゴリに分類できます。
ジョブクラスは特定のジョブクラスの基本クラスから継承する必要があります。例: Quartz は org.springframework.scheduling.quartz から継承する必要があります。 .QuartzJobBean; java .util.Timer は java.util.TimerTask から継承する必要があります。
ジョブ クラスは通常の Java クラスであり、基本クラスから継承する必要はありません。
注: すべてのクラスは共通クラスであり、事前に特別に処理する必要がないため、個人的には 2 番目の方法を使用することをお勧めします。
タスクスケジューリングのトリガータイミングから、ジョブに使用されるトリガーは主に以下の2種類があります:
指定時間ごとに1回トリガー、Quartzでの対応するトリガーはorgです。 .springframework.scheduling.quartz.SimpleTriggerBean
指定された時間ごとに 1 回トリガーされます。Quartz の対応するスケジューラーは次のとおりです。 org.springframework.scheduling.quartz.CronTriggerBean
注: すべてのタスクが使用できるわけではありません。たとえば、java.util.TimerTask タスクは最初のタスクのみを使用できます。 Quartz と Spring タスクは両方とも、これら 2 つのトリガー条件をサポートできます。
Ⅱ。使い方
QuartzやSpringタスクなど、各タスクスケジューリングツールの使い方を詳しく紹介します。
Quartz
最初のタイプのジョブ クラスは、特定の基本クラス org.springframework.scheduling.quartz.QuartzJobBean を継承します。
ステップ 1: ジョブ クラスを定義する
Java コード
import org.quartz.JobExecutionException;
import org.springframe work.s scheduling.quartz.QuartzJobBean ;
public class Job1 extends QuartzJobBean {
private int timeout;
private static int i = 0;
// スケジュール設定はタイムアウト時間後に開始されます
int timeout) {
this.timeout = タイムアウト
}
/**
* スケジュールされる特定のタスク
*/
@Override
protected voidexecuteInternal(JobExecutionContext context)
throws JobExecutionException {
システムが終了しました。 .println( "スケジュールされたタスクが実行されています...");
}
}
ステップ 2: Spring 構成ファイルでジョブ クラス JobDetailBean を構成します
Xml コード
説明: org.springframework.scheduling .quartz.JobDetailBean には 2 つの属性があります。jobClass 属性は Java コードで定義したタスク クラスであり、jobDataAsMap 属性はタスク クラスに注入する必要がある属性値です。
ステップ 3: ジョブ スケジューリングのトリガー方法 (トリガー) を構成する
Quartz には 2 つのジョブ トリガーがあります。
org.springframework.scheduling .quartz.CronTriggerBean 最初の SimpleTriggerBean は、30 分に 1 回の実行など、特定の頻度でのタスクの呼び出しのみをサポートします。 設定方法は以下の通りです: Xml コード
th 2 種類の CronTriggerBean は、毎日 12:00 など、指定した時刻に 1 回実行することをサポートします。
設定方法は以下の通りです。
Xmlコード
org.springframework.scheduling .quartz.CronTriggerBean
最初の SimpleTriggerBean は、30 分に 1 回の実行など、特定の頻度でのタスクの呼び出しのみをサポートします。
設定方法は以下の通りです:
Xmlコード
2 番目の CronTriggerBean は、指定された時間に 1 回の実行をサポートします。 1日1回12:00に実行されるなど。
設定方法は以下の通りです:
Xmlコード
xmlns :task="http://www.springframework.org/schema/task" . 。 。 。 。 。 xsi:schemaLocation="http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"> 第三ステップ: Spring 構成ファイル Xml コード これで設定は完了です。とても簡単ですね。 2 番目: アノテーション フォームを使用する タスク クラスを作成するたびに XML ファイルで設定する必要はないかもしれません。このアノテーションの定義を見てみましょう。ソース ファイル内: Java コード @Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented fixedDelay: 公式ドキュメントの説明: 前のタスクの完了時間から間隔を測定する間隔ベースのトリガー。時間単位の値は、前のタスクの完了から開始までの間隔を意味します。次のタスク、単位はミリ秒です。 fixedRate: 公式ドキュメントの説明: 間隔は、前のタスクの開始時刻から、つまり、前のタスクの開始からミリ秒単位で測定される間隔ベースのトリガーです。次のタスクの開始間隔 (ミリ秒)。 それでは、設定してみましょう。 ステップ 1: pojo を書く Java コード import org.springframework.scheduling.annotation.Scheduled; @Component("taskJob") public class TaskJob { @Scheduled(cron = "0 0 3 * * ?") public void job1() { System.out.println("タスク進行中...") } } ステップ 2: タスク関連の設定を追加します: Xml コード xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org. /schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns :task="http://www.springframework.org/schema/task" /schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http ://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd http://www.springframework.org/schema/ tx http://www.springframework.org/schema/tx/spring -tx-3.0.xsd /spring-task-3.0.xsd" default-lazy-init="false" > -> 注: 理論的には、構成文 もちろん、Spring タスクにはまだ多くのパラメータがあります。詳細については、xsd ドキュメント http://www.springframework を参照してください。 org/schema/task/spring-task-3.0.xsd。 付録: cronExpression の構成手順、具体的な使用法およびパラメータについては、Baidu google フィールド 許可される値 許可される特殊文字 秒 0 ~ 59 、 - * / ポイント 0-59 、 - * / 時間 0-23 、 - * / 日付 1-31 、 - * ? / L W C 月 1-12 または 1 月-12 月 、 - * / 平日 1 ~ 7 または SUN ~ SAT 、 - * ? / L C # 年 (オプション) 空白のまま、1970 ~ 2099 、 - * / -間隔 * そのフィールドを設定したくないですか ここにいくつかの例があります CRON 式 意味 「0 0 12 * * ?」 毎日正午にトリガーされます 「0 15 10 ? * *」 毎朝 10:15 にトリガーされます 「0 15 10 *」 * ?" 毎朝 10:15 にトリガーされます "0 15 10 * * ? *" 毎朝 10:15 にトリガーされます "0 15 10 * * 2005" 毎朝 10:15 にトリガーされます2005 年 「0 * 14 * * ?」 毎日午後 2 時から 2 時 59 分まで 1 分ごとにトリガーされます 「0 0/5 14 * * ?」 毎日午後 2 時から 2 時まで: 5 分ごとにトリガーされます55 分終了時の分 「0 0/5 14,18 * * ?」 毎日午後 2 時から 2 時 55 分と午後 6 時から 6 時 55 分の 2 つの時間帯で 5 分ごとにトリガー 「0 0-5 14 * * ?」 毎日 14:00 から 14:05 まで毎分トリガーします 「0 10,44 14 ? 3 WED」 3 月の毎週水曜日 14:10 にトリガーします14:44 「0 15 10? * MON-FRI」毎週月曜日、火曜日、水曜日、木曜日、金曜日の 10:15 にトリガー その他 いくつかのメソッドに関連する記事Java タイマーの場合は、PHP 中国語 Web サイトに注意してください。

Javaはプラットフォーム固有の問題をどのように軽減しますか? Javaは、JVMおよび標準ライブラリを通じてプラットフォームに依存します。 1)bytecodeとjvmを使用して、オペレーティングシステムの違いを抽象化します。 2)標準のライブラリは、パスクラス処理ファイルパス、CHARSETクラス処理文字エンコードなど、クロスプラットフォームAPIを提供します。 3)最適化とデバッグのために、実際のプロジェクトで構成ファイルとマルチプラットフォームテストを使用します。

java'splatformentencentenhancesmicroservicesecturectureby byofferingdeploymentflexability、一貫性、スケーラビリティ、およびポート可能性。1)展開の展開の展開は、AllosmicRoserviThajvm.2)deploymentflexibility lowsmicroserviceSjvm.2)一貫性のあるAcrossServicessimplisimpligiessdevelisementand

Graalvmは、Javaのプラットフォームの独立性を3つの方法で強化します。1。言語間の相互運用性、Javaが他の言語とシームレスに相互運用できるようにします。 2。独立したランタイム環境、graalvmnativeimageを介してJavaプログラムをローカル実行可能ファイルにコンパイルします。 3.パフォーマンスの最適化、Graalコンパイラは、Javaプログラムのパフォーマンスと一貫性を改善するための効率的なマシンコードを生成します。

aeffectivelytestjavaapplicationsforformcompativity、followthesesteps:1)setupautomatedacrossmultipleplatformsusingsingcitoolslikejenkinsorgithubactions.2)divivisonmanualtingonrealhardwaretocatissusuessususus.3)

Javaコンパイラは、ソースコードをプラットフォームに依存しないバイトコードに変換することにより、Javaのプラットフォームの独立性を実現し、JVMがインストールされた任意のオペレーティングシステムでJavaプログラムを実行できるようにします。

bytecodeachievesplatformedentencedexedectedbyavirtualMachine(VM)、forexApplev.forexample、javabytecodecanrunrunrunnonydevicewithajvm、writeonce、runany "ferfuctionality.whilebytecodeOffersenhの可能性を承認します

Javaは100%のプラットフォームの独立性を達成することはできませんが、そのプラットフォームの独立性はJVMとBytecodeを通じて実装され、コードが異なるプラットフォームで実行されるようにします。具体的な実装には、次のものが含まれます。1。bytecodeへのコンパイル。 2。JVMの解釈と実行。 3。標準ライブラリの一貫性。ただし、JVMの実装の違い、オペレーティングシステムとハードウェアの違い、およびサードパーティライブラリの互換性は、プラットフォームの独立性に影響を与える可能性があります。

Javaは、「Write onse、Averywhere」を通じてプラットフォームの独立性を実現し、コードの保守性を向上させます。 2。メンテナンスコストが低いため、1つの変更のみが必要です。 3.チームのコラボレーション効率が高く、知識共有に便利です。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

WebStorm Mac版
便利なJavaScript開発ツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ホットトピック









