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