クラス CronTrigger
java.lang.ObjectSE
jakarta.enterprise.concurrent.CronTrigger
- 実装されているすべてのインターフェース:
Trigger,ZonedTrigger
Cron ベースの Trigger 実装。単一のスペース文字で区切られた 5 つまたは 6 つのフィールドと ZoneIdSE をサポートします。基本的な cron 構文がサポートされています。より高度なシナリオでは、この実装をサブクラス化するか、独自の Trigger 実装で複数の CronTrigger インスタンスを組み合わせることができます。
| 秒 (オプション) | 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 との一貫性を示します。 |
, | すべてのフィールドのリストを区切ります。例: MON,WED,FRI または MAY,SEP |
- | すべてのフィールドの範囲を区切ります。例: MON-FRI または 9-17 |
/ | dayOfWeek を除くすべてのフィールドの繰り返し増分を指定します。例: hours フィールドの 6/7 は 6,13,20 と同等です。 |
# | 序数の曜日を指定します。例: FRI#1,SAT#L は、月の最初の金曜日と最後の土曜日です。# は、範囲 (-) およびインクリメント (/) 内では使用できません。 |
* | 任意の値が許可されることを示します。 |
L | 月の最終日を示します。2L は最後から 2 番目の日を示し、以下同様です。 |
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) 流れるような構成パターンのコンストラクター。方法の概要
修飾子と型メソッド説明daysOfMonth(int... d) day-of-month cron フィールドを構成し、以前の day-of-month の値を上書きします。day-of-month cron フィールドを構成し、以前の day-of-month の値を上書きします。曜日の以前の値を上書きして、曜日の cron フィールドを構成します。daysOfWeek(DayOfWeekSE... d) 曜日の以前の値を上書きして、曜日の cron フィールドを構成します。getNextRunTime(LastExecution lastExecutionInfo, ZonedDateTimeSE taskScheduledTime) cron スケジュールを使用し、最新の実行の終了に基づいて (またはそれがない場合は、最初のスケジュール時間)、次にタスクを実行する時間を取得します。final ZoneIdSEhours(int... h) 時間の以前の値を上書きして、時間の cron フィールドを構成します。時間の以前の値を上書きして、時間の cron フィールドを構成します。minutes(int... m) 分の cron フィールドを構成し、以前の分の値を上書きします。分の cron フィールドを構成し、以前の分の値を上書きします。月の cron フィールドを構成し、月の以前の値を上書きします。月の以前の値を上書きして、月の cron フィールドを構成します。protected ZonedDateTimeSEnext(ZonedDateTimeSE from) cron スケジュールに従って、次の日時に進みます。seconds(int... s) 秒の cron フィールドを構成し、秒の以前の値を上書きします。秒の cron フィールドを構成し、秒の以前の値を上書きします。toString()CronTrigger の読みやすい表現。フィールドをリスト形式で表示するか、簡潔にするために * 文字を使用して表示します。クラス java.lang.ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, wait, waitSE, waitSEインターフェース jakarta.enterprise.concurrent.ZonedTrigger から継承されたメソッド
getNextRunTime, skipRun, skipRun
コンストラクターの詳細
CronTrigger
cron 式を受け入れるコンストラクター。- パラメーター:
cron- cron 式。zone-getNextRunTimeおよびskipRunメソッドに提供されるZonedDateTimeSE に使用するタイムゾーン ID。Null は、システムのデフォルトを使用することを示します。
CronTrigger
流れるような構成パターンのコンストラクター。秒、分、時間のデフォルトは 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
- 次で指定:
- インターフェース
ZonedTriggerのgetZoneId - 戻り値:
- このトリガーの操作に使用するタイムゾーン。
daysOfMonth
day-of-month cron フィールドを構成し、以前の day-of-month の値を上書きします。- パラメーター:
d- 1 から 31 までの 1 つ以上の日数。- 戻り値:
- このインスタンス。
daysOfMonth
day-of-month cron フィールドを構成し、以前の day-of-month の値を上書きします。- パラメーター:
d- dayOfMonth cron フィールド。例:15,L。- 戻り値:
- このインスタンス。
daysOfWeek
曜日の以前の値を上書きして、曜日の cron フィールドを構成します。- パラメーター:
d- 1 週間のうち 1 日以上。- 戻り値:
- このインスタンス。
daysOfWeek
曜日の以前の値を上書きして、曜日の cron フィールドを構成します。- パラメーター:
d- dayOfWeek cron フィールド。例:MON-FRI,SAT#L。- 戻り値:
- このインスタンス。
hours
時間の以前の値を上書きして、時間の cron フィールドを構成します。- パラメーター:
h- 0 から 23 までの 1 つ以上の時間の値。- 戻り値:
- このインスタンス。
hours
時間の以前の値を上書きして、時間の cron フィールドを構成します。- パラメーター:
h- 時間の cron フィールド。例: 午前 9 時から午後 5 時までの9-17。- 戻り値:
- このインスタンス。
minutes
分の cron フィールドを構成し、以前の分の値を上書きします。- パラメーター:
m- 0 から 59 までの 1 つ以上の分の値。- 戻り値:
- このインスタンス。
minutes
分の cron フィールドを構成し、以前の分の値を上書きします。- パラメーター:
m- 分 cron フィールド。例: 正時 5 分から始まる 10 分間隔の5/10(:05, :15, :25, :35, :45, :55)。- 戻り値:
- このインスタンス。
months
月の以前の値を上書きして、月の cron フィールドを構成します。- パラメーター:
m- 1 か月以上。- 戻り値:
- このインスタンス。
months
月の cron フィールドを構成し、月の以前の値を上書きします。- パラメーター:
m- 月 cron フィールド。例:SEP-NOV,FEB-MAY。- 戻り値:
- このインスタンス。
seconds
秒の cron フィールドを構成し、秒の以前の値を上書きします。- パラメーター:
s- 0 から 59 までの 1 つ以上の秒の値。- 戻り値:
- このインスタンス。
seconds
秒の cron フィールドを構成し、秒の以前の値を上書きします。- パラメーター:
s- 秒 cron フィールド。例:30.- 戻り値:
- このインスタンス。
toString
CronTrigger の読みやすい表現。フィールドをリスト形式で表示するか、簡潔にするために * 文字を使用して表示します。以下に例を示します。
CronTrigger@89abcdef seconds 0, minutes 0, hours 9, *, months 3,6,9,12, SAT#2,SAT#4
next
cron スケジュールに従って、次の日時に進みます。- パラメーター:
from- 次回を計算する日付 / 時刻。- 戻り値:
- cron スケジュールに従った次の日付 / 時刻、または一致する場合は元の時刻。