モジュール jdk.incubator.concurrent
パッケージ jdk.incubator.concurrent
クラスStructuredTaskScope.ShutdownOnFailure
java.lang.Object
jdk.incubator.concurrent.StructuredTaskScope<Object>
jdk.incubator.concurrent.StructuredTaskScope.ShutdownOnFailure
- すべての実装されたインタフェース:
AutoCloseable
- 含まれているクラス:
StructuredTaskScope<T>
public static final class StructuredTaskScope.ShutdownOnFailure extends StructuredTaskScope<Object>
異常終了する最初のサブタスクの例外を取得する
StructuredTaskScope
。 取得後、shutdownメソッドを起動して未完了のスレッドを中断し、所有者をウェイ・ク アップします。 このクラスによって実装されるポリシーは、すべてのサブタスクの結果が("すべて起動")を必要とする場合を対象としています。サブタスクが失敗した場合、他の未完了サブタスクの結果は不要になります。
特に指定しないかぎり、このクラスのメソッドにnull
引数を渡すと、NullPointerException
がスローされます。
- 導入されたバージョン:
- 19
-
ネストされたクラスのサマリー
クラスjdk.incubator.concurrent.StructuredTaskScopeで宣言されたネストされたクラス/インタフェース
StructuredTaskScope.ShutdownOnFailure, StructuredTaskScope.ShutdownOnSuccess<T>
-
コンストラクタのサマリー
コンストラクタ説明仮想スレッドを作成する名前のない新しいShutdownOnFailure
を構築します。ShutdownOnFailure
(String name, ThreadFactory factory) 指定された名前およびスレッド・ファクトリで新しいShutdownOnFailure
を構築します。 -
メソッドのサマリー
修飾子と型メソッド説明例外で完了した最初のサブタスクの例外を返します。protected void
handleComplete
(Future<Object> future) 異常な(例外または取消済)を完了したタスクのFuture
を使用して初めて、指定されたタスク範囲を停止します。join()
すべてのスレッドが終了するか、タスク範囲がシャットダウンするまで待ちます。指定された期限まで、すべてのスレッドが終了するか、タスク範囲がシャットダウンするまで待機します。void
サブタスクが異常終了した場合にスローします。<X extends Throwable>
voidthrowIfFailed
(Function<Throwable, ? extends X> esf) サブタスクが異常終了した場合に、指定された例外供給関数によって生成された例外をスローします。クラスjdk.incubator.concurrent.StructuredTaskScopeで宣言されたメソッド
close, fork, shutdown
-
コンストラクタの詳細
-
ShutdownOnFailure
public ShutdownOnFailure(String name, ThreadFactory factory) 指定された名前およびスレッド・ファクトリで新しいShutdownOnFailure
を構築します。 タスク範囲には、モニタリングおよび管理の目的で任意の名前が付けられます。 スレッド・ファクトリは、タスクが「フォーク」の場合にスレッドをcreate
するために使用されます。 タスク・スコープは現在のスレッドによって所有されます。- パラメータ:
name
- タスク範囲の名前。NULLにできますfactory
- スレッドのファクトリ
-
ShutdownOnFailure
public ShutdownOnFailure()仮想スレッドを作成する名前のない新しいShutdownOnFailure
を構築します。このコンストラクタは、
null
という名前の2引数コンストラクタと、仮想スレッドを作成するスレッド・ファクトリの起動と同等です。
-
-
メソッドの詳細
-
handleComplete
異常な(例外または取消済)を完了したタスクのFuture
を使用して初めて、指定されたタスク範囲を停止します。- オーバーライド:
- クラス
StructuredTaskScope<Object>
のhandleComplete
- パラメータ:
future
- 完了済タスク- 関連項目:
-
join
public StructuredTaskScope.ShutdownOnFailure join() throws InterruptedExceptionすべてのスレッドが終了するか、タスク範囲がシャットダウンするまで待ちます。 このメソッドは、タスク・スコープで開始されたすべてのスレッドの実行が(タスクとhandleComplete
メソッドの両方)、タスク・スコープを停止するためにshutdown
メソッドが呼び出されるか、現在のスレッドがinterruptedになるまで待機します。このメソッドは、タスク・スコープ所有者のみが起動できます。
- オーバーライド:
- クラス
StructuredTaskScope<Object>
のjoin
- 戻り値:
- このタスクの範囲
- 例外:
IllegalStateException
- このタスク範囲がクローズされている場合WrongThreadException
- 現在のスレッドが所有者でない場合InterruptedException
- 待機中に割込みが発生した場合
-
joinUntil
public StructuredTaskScope.ShutdownOnFailure joinUntil(Instant deadline) throws InterruptedException, TimeoutException 指定された期限まで、すべてのスレッドが終了するか、タスク範囲がシャットダウンするまで待機します。 このメソッドは、タスク・スコープで開始されたすべてのスレッドの実行が(タスクとhandleComplete
メソッドの両方)、タスク・スコープを停止するためにshutdown
メソッドが呼び出されるか、現在のスレッドがinterruptedになるか、期限に達するまで待機します。このメソッドは、タスク・スコープ所有者のみが起動できます。
- オーバーライド:
- クラス
StructuredTaskScope<Object>
のjoinUntil
- パラメータ:
deadline
- 期限- 戻り値:
- このタスクの範囲
- 例外:
IllegalStateException
- このタスク範囲がクローズされている場合WrongThreadException
- 現在のスレッドが所有者でない場合InterruptedException
- 待機中に割込みが発生した場合TimeoutException
- 待機中に期限に達した場合
-
exception
例外で完了した最初のサブタスクの例外を返します。 例外ありで完了したサブタスクがなく、取り消されたサブタスクがhandleComplete
メソッドに通知された場合、CancellationException
が返されます。 異常終了したサブタスクがない場合、空のOptional
が返されます。 -
throwIfFailed
public void throwIfFailed() throws ExecutionExceptionサブタスクが異常終了した場合にスローします。 例外ありで完了したサブタスクがある場合、causeとして失敗する最初のサブタスクを除いて、ExecutionException
がスローされます。 例外ありで完了したサブタスクがなく、取り消されたサブタスクがhandleComplete
メソッドに通知された場合、CancellationException
がスローされます。 サブタスクが異常終了しなかった場合、このメソッドは何もしません。- APIのノート:
- このメソッドは、タスク・スコープ所有者が
join
(またはjoinUntil
)を起動した後に起動することを目的としています。 将来のリリースでは、メソッドがほかのスレッドによって呼び出されるのを防ぐため、または結合前に強制が追加される可能性があります。 - 例外:
ExecutionException
- 例外ありでサブタスクが完了した場合CancellationException
- 例外ありで完了したサブタスクがなく、サブタスクが取り消された場合
-
throwIfFailed
サブタスクが異常終了した場合に、指定された例外供給関数によって生成された例外をスローします。 例外ありで完了したサブタスクがある場合、失敗する最初のサブタスクを除いて関数が起動されます。 例外ありで完了したサブタスクがなく、取り消されたサブタスクがhandleComplete
メソッドに通知された場合、関数はCancellationException
を使用してコールされます。 関数によって返された例外がスローされます。 サブタスクが異常終了しなかった場合、このメソッドは何もしません。
-