クラス CronTrigger
- java.lang.ObjectSE
-
- jakarta.enterprise.concurrent.CronTrigger
- 実装されたすべてのインターフェース:
Trigger
,ZonedTrigger
public class CronTrigger extends ObjectSE implements ZonedTrigger
Cron ベースの
Trigger
実装。単一のスペース文字で区切られた 5 つまたは 6 つのフィールドとZoneId
SE をサポートします。基本的な 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 は DayOfWeek
SE との一貫性を示します。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,SUN
5 月から 9 月までの週末、午後 1 時から 3 時間ごと 30 10 * APR,AUG TUE#2,TUE#L
4 月と 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)
流れるような構成パターンのコンストラクター。
メソッドのサマリー
すべてのメソッド インスタンスメソッド 具象メソッド 修飾子と型 メソッド 説明 CronTrigger
daysOfMonth(int... d)
day-of-month cron フィールドを構成し、以前の day-of-month の値を上書きします。CronTrigger
daysOfMonth(StringSE d)
day-of-month cron フィールドを構成し、以前の day-of-month の値を上書きします。CronTrigger
daysOfWeek(StringSE d)
曜日の以前の値を上書きして、曜日の cron フィールドを構成します。CronTrigger
daysOfWeek(DayOfWeekSE... d)
曜日の以前の値を上書きして、曜日の cron フィールドを構成します。ZonedDateTimeSE
getNextRunTime(LastExecution lastExecutionInfo, ZonedDateTimeSE taskScheduledTime)
cron スケジュールを使用し、最新の実行の終了に基づいて (またはそれがない場合は、最初のスケジュール時間)、次にタスクを実行する時間を取得します。ZoneIdSE
getZoneId()
CronTrigger
hours(int... h)
時間の以前の値を上書きして、時間の cron フィールドを構成します。CronTrigger
hours(StringSE h)
時間の以前の値を上書きして、時間の cron フィールドを構成します。CronTrigger
minutes(int... m)
分の cron フィールドを構成し、以前の分の値を上書きします。CronTrigger
minutes(StringSE m)
分の cron フィールドを構成し、以前の分の値を上書きします。CronTrigger
months(StringSE m)
月の cron フィールドを構成し、月の以前の値を上書きします。CronTrigger
months(MonthSE... m)
月の以前の値を上書きして、月の cron フィールドを構成します。protected ZonedDateTimeSE
next(ZonedDateTimeSE from)
cron スケジュールに従って、次の日時に進みます。CronTrigger
seconds(int... s)
秒の cron フィールドを構成し、秒の以前の値を上書きします。CronTrigger
seconds(StringSE s)
秒の cron フィールドを構成し、秒の以前の値を上書きします。StringSE
toString()
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
メソッドに提供されるZonedDateTime
SE に使用するタイムゾーン ID。Null は、システムのデフォルトを使用することを示します。
CronTrigger
public CronTrigger(ZoneIdSE zone)
流れるような構成パターンのコンストラクター。秒、分、時間のデフォルトは 0 です。残りのフィールドのデフォルトは * です。- パラメーター:
zone
-getNextRunTime
およびskipRun
メソッドに提供されるZonedDateTime
SE に使用するタイムゾーン 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 スケジュールに従った次の日付 / 時刻、または一致する場合は元の時刻。