クラス CronTrigger
- java.lang.ObjectSE
-
- jakarta.enterprise.concurrent.CronTrigger
- 実装されているすべてのインターフェース:
Trigger,ZonedTrigger
public class CronTrigger extends ObjectSE implements ZonedTrigger
Cron ベースの
Trigger実装。単一のスペース文字で区切られた 5 つまたは 6 つのフィールドとZoneIdSE をサポートします。基本的な cron 構文がサポートされています。より高度なシナリオでは、この実装をサブクラス化するか、独自のTrigger実装で複数のCronTriggerインスタンスを組み合わせることができます。Cron 式フィールド 秒 (オプション) 0-59, *. 不在時は 0 とする 分 0-59, * 時間 0-23, * dayOfMonth 0-31, *、L 月 1-12、1 月~ 12 月、1 月~ 12 月、* 曜日 SUN-SAT、Sunday-Saturday、0-7, *. 0 および 7 は両方とも日曜日を表します。0 は週の最初の曜日を指定し、7 は DayOfWeekSE との一貫性を示します。Cron 式構文 ,すべてのフィールドのリストを区切ります。例: MON,WED,FRIまたはMAY,SEP-すべてのフィールドの範囲を区切ります。例: MON-FRIまたは9-17/dayOfWeek を除くすべてのフィールドの繰り返し増分を指定します。例: hoursフィールドの6/7は6,13,20と同等です。#序数の曜日を指定します。例: FRI#1,SAT#Lは、月の最初の金曜日と最後の土曜日です。#は、範囲 (-) およびインクリメント (/) 内では使用できません。*任意の値が許可されることを示します。 L月の最終日を示します。 2Lは最後から 2 番目の日を示し、以下同様です。Cron 式の例 0 * * * *毎正時 0 9-17 * * MON-FRI平日の午前 9 時から午後 5 時まで、毎正時 0 13/3 * MAY-SEP SAT,SUN5 月から 9 月までの週末、午後 1 時から 3 時間ごと 30 10 * APR,AUG TUE#2,TUE#L4 月と 8 月の第 2 および最終火曜日の午前 10 時 30 分 15 22 4 10,20,L * *毎月 10 日、20 日、末日の 4:22:15 AM 0 8-11,13-16 2L JAN-MAR *1 月、2 月、3 月の最後から 2 番目の日の午前 8 時から午前 11 時までと午後 1 時から午後 4 時まで 上記のような cron 式とタイムゾーン ID を受け入れるコンストラクターが提供されます。元:
trigger = new CronTrigger("0 7 * SEP-MAY MON-FRI", ZoneId.of("America/New_York"));別のコンストラクターを使用すると、cron フィールドを流れるような方法で任意の順序で指定できます。元:
trigger = new CronTrigger(ZoneId.of("America/Los_Angeles")) .months(Month.DECEMBER) .daysOfMonth(24) .hours(16, 18);このトリガーの
getNextRunTimeメソッドは、cron スケジュールに基づいて次回の実行時間を決定します。skipRunメソッドは、サブクラスによってオーバーライドされない限り、常に false を返します。cron 式フィールドを構成するこのクラスのメソッドは、スレッドセーフではありません。
ManagedScheduledExecutorServiceに供給される前にCronTriggerの初期化が行われ、その後CronTriggerが変更されないようにするのは、呼び出し元の責任です。CronTriggerをサブクラス化して、より複雑なロジックを提供することができます。たとえば、次の 2 つのトリガーを組み合わせて月 2 回の給与計算を月の 15 日と最終日、または前者が週末になる前の金曜日にスケジュールします。public class PayrollTrigger extends CronTrigger { private final CronTrigger fridaysBeforeWeekendPayrollDay; PayrollTrigger() { // Every 15th and last day of the month that is a weekday, super("0 10 15,L * MON-FRI", ZoneId.of("America/Chicago")); // Every 13th, 14th, third-to-last, and second-to-last day of the month that is a Friday, fridaysBeforeWeekendPayrollDay = new CronTrigger( "0 10 13,14,3L,2L * FRI", getZoneId()); } public ZonedDateTime getNextRunTime(LastExecution lastExec, ZonedDateTime scheduledAt) { ZonedDateTime time1 = super.getNextRunTime(lastExec, scheduledAt); ZonedDateTime time2 = fridaysBeforeWeekendPayrollDay.getNextRunTime(lastExec, scheduledAt); return time1.isBefore(time2) ? time1 : time2; } }- 導入:
- 3.0
コンストラクターの概要
コンストラクター コンストラクター 説明 CronTrigger(StringSE cron, ZoneIdSE zone)cron 式を受け入れるコンストラクター。CronTrigger(ZoneIdSE zone)流れるような構成パターンのコンストラクター。
方法の概要
すべてのメソッド インスタンスメソッド 具象メソッド 修飾子と型 メソッド 説明 CronTriggerdaysOfMonth(int... d)day-of-month cron フィールドを構成し、以前の day-of-month の値を上書きします。CronTriggerdaysOfMonth(StringSE d)day-of-month cron フィールドを構成し、以前の day-of-month の値を上書きします。CronTriggerdaysOfWeek(StringSE d)曜日の以前の値を上書きして、曜日の cron フィールドを構成します。CronTriggerdaysOfWeek(DayOfWeekSE... d)曜日の以前の値を上書きして、曜日の cron フィールドを構成します。ZonedDateTimeSEgetNextRunTime(LastExecution lastExecutionInfo, ZonedDateTimeSE taskScheduledTime)cron スケジュールを使用し、最新の実行の終了に基づいて (またはそれがない場合は、最初のスケジュール時間)、次にタスクを実行する時間を取得します。ZoneIdSEgetZoneId()CronTriggerhours(int... h)時間の以前の値を上書きして、時間の cron フィールドを構成します。CronTriggerhours(StringSE h)時間の以前の値を上書きして、時間の cron フィールドを構成します。CronTriggerminutes(int... m)分の cron フィールドを構成し、以前の分の値を上書きします。CronTriggerminutes(StringSE m)分の cron フィールドを構成し、以前の分の値を上書きします。CronTriggermonths(StringSE m)月の cron フィールドを構成し、月の以前の値を上書きします。CronTriggermonths(MonthSE... m)月の以前の値を上書きして、月の cron フィールドを構成します。protected ZonedDateTimeSEnext(ZonedDateTimeSE from)cron スケジュールに従って、次の日時に進みます。CronTriggerseconds(int... s)秒の cron フィールドを構成し、秒の以前の値を上書きします。CronTriggerseconds(StringSE s)秒の cron フィールドを構成し、秒の以前の値を上書きします。StringSEtoString()CronTrigger の読みやすい表現。フィールドをリスト形式で表示するか、簡潔にするために * 文字を使用して表示します。クラス java.lang.ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, wait, waitSE, waitSE
インターフェース jakarta.enterprise.concurrent.ZonedTrigger から継承されたメソッド
getNextRunTime, skipRun, skipRun
コンストラクターの詳細
CronTrigger
public CronTrigger(StringSE cron, ZoneIdSE zone)
cron 式を受け入れるコンストラクター。- パラメーター:
cron- cron 式。zone-getNextRunTimeおよびskipRunメソッドに提供されるZonedDateTimeSE に使用するタイムゾーン ID。Null は、システムのデフォルトを使用することを示します。
CronTrigger
public CronTrigger(ZoneIdSE zone)
流れるような構成パターンのコンストラクター。秒、分、時間のデフォルトは 0 です。残りのフィールドのデフォルトは * です。- パラメーター:
zone-getNextRunTimeおよびskipRunメソッドに提供されるZonedDateTimeSE に使用するタイムゾーン ID。Null は、システムのデフォルトを使用することを示します。
メソッドの詳細
getNextRunTime
public ZonedDateTimeSE getNextRunTime(LastExecution lastExecutionInfo, ZonedDateTimeSE taskScheduledTime)
cron スケジュールを使用し、最新の実行の終了に基づいて (またはそれがない場合は、最初のスケジュール時間)、次にタスクを実行する時間を取得します。- 次で指定:
- インターフェース
ZonedTriggerのgetNextRunTime - パラメーター:
lastExecutionInfo- タスクの最後の実行に関する情報。タスクがまだ実行されていない場合、この値は null になります。taskScheduledTime- タスクをスケジュールするためにManagedScheduledExecutorService.scheduleメソッドが呼び出された日時。- 戻り値:
- タスクの次の実行を開始する日付 / 時刻。
- 例外:
DateTimeExceptionSE- 次回が cron 式から判断できない場合。
getZoneId
public final ZoneIdSE getZoneId()
- 次で指定:
- インターフェース
ZonedTriggerのgetZoneId - 戻り値:
- このトリガーの操作に使用するタイムゾーン。
daysOfMonth
public CronTrigger daysOfMonth(int... d)
day-of-month cron フィールドを構成し、以前の day-of-month の値を上書きします。- パラメーター:
d- 1 から 31 までの 1 つ以上の日数。- 戻り値:
- このインスタンス。
daysOfMonth
public CronTrigger daysOfMonth(StringSE d)
day-of-month cron フィールドを構成し、以前の day-of-month の値を上書きします。- パラメーター:
d- dayOfMonth cron フィールド。例:15,L。- 戻り値:
- このインスタンス。
daysOfWeek
public CronTrigger daysOfWeek(DayOfWeekSE... d)
曜日の以前の値を上書きして、曜日の cron フィールドを構成します。- パラメーター:
d- 1 週間のうち 1 日以上。- 戻り値:
- このインスタンス。
daysOfWeek
public CronTrigger daysOfWeek(StringSE d)
曜日の以前の値を上書きして、曜日の cron フィールドを構成します。- パラメーター:
d- dayOfWeek cron フィールド。例:MON-FRI,SAT#L。- 戻り値:
- このインスタンス。
hours
public CronTrigger hours(int... h)
時間の以前の値を上書きして、時間の cron フィールドを構成します。- パラメーター:
h- 0 から 23 までの 1 つ以上の時間の値。- 戻り値:
- このインスタンス。
hours
public CronTrigger hours(StringSE h)
時間の以前の値を上書きして、時間の cron フィールドを構成します。- パラメーター:
h- 時間の cron フィールド。例: 午前 9 時から午後 5 時までの9-17。- 戻り値:
- このインスタンス。
minutes
public CronTrigger minutes(int... m)
分の cron フィールドを構成し、以前の分の値を上書きします。- パラメーター:
m- 0 から 59 までの 1 つ以上の分の値。- 戻り値:
- このインスタンス。
minutes
public CronTrigger minutes(StringSE m)
分の cron フィールドを構成し、以前の分の値を上書きします。- パラメーター:
m- 分 cron フィールド。例: 正時 5 分から始まる 10 分間隔の5/10(:05, :15, :25, :35, :45, :55)。- 戻り値:
- このインスタンス。
months
public CronTrigger months(MonthSE... m)
月の以前の値を上書きして、月の cron フィールドを構成します。- パラメーター:
m- 1 か月以上。- 戻り値:
- このインスタンス。
months
public CronTrigger months(StringSE m)
月の cron フィールドを構成し、月の以前の値を上書きします。- パラメーター:
m- 月 cron フィールド。例:SEP-NOV,FEB-MAY。- 戻り値:
- このインスタンス。
seconds
public CronTrigger seconds(int... s)
秒の cron フィールドを構成し、秒の以前の値を上書きします。- パラメーター:
s- 0 から 59 までの 1 つ以上の秒の値。- 戻り値:
- このインスタンス。
seconds
public CronTrigger seconds(StringSE s)
秒の cron フィールドを構成し、秒の以前の値を上書きします。- パラメーター:
s- 秒 cron フィールド。例:30.- 戻り値:
- このインスタンス。
toString
public StringSE toString()
CronTrigger の読みやすい表現。フィールドをリスト形式で表示するか、簡潔にするために * 文字を使用して表示します。以下に例を示します。
CronTrigger@89abcdef seconds 0, minutes 0, hours 9, *, months 3,6,9,12, SAT#2,SAT#4
next
protected ZonedDateTimeSE next(ZonedDateTimeSE from)
cron スケジュールに従って、次の日時に進みます。- パラメーター:
from- 次回を計算する日付 / 時刻。- 戻り値:
- cron スケジュールに従った次の日付 / 時刻、または一致する場合は元の時刻。