モジュール java.base
パッケージ java.util.concurrent

クラスStructuredTaskScope.ShutdownOnSuccess<T>

java.lang.Object
java.util.concurrent.StructuredTaskScopePREVIEW<T>
java.util.concurrent.StructuredTaskScope.ShutdownOnSuccess<T>
型パラメータ:
T - 結果の型
すべての実装されたインタフェース:
AutoCloseable
含まれているクラス:
StructuredTaskScopePREVIEW<T>

public static final class StructuredTaskScope.ShutdownOnSuccess<T> extends StructuredTaskScopePREVIEW<T>
ShutdownOnSuccessは、JavaプラットフォームのプレビューAPIです。
プレビュー機能が有効な場合のみ、プログラムでShutdownOnSuccessを使用できます。
プレビュー機能は、今後のリリースで削除するか、Javaプラットフォームの永続機能にアップグレードすることができます。
「successfully」PREVIEWに完了する最初のサブタスクの結果を取得するStructuredTaskScope 取得されると、未完了のスレッドを中断し、タスク・スコープの所有者をウェイクアップするために、タスク・スコープを「停止」PREVIEWします。 このクラスによって実装されるポリシーは、サブタスクの結果が("任意の起動")になり、他の未完了サブタスクの結果が不要になった場合を対象としています。

特に指定しないかぎり、このクラスのメソッドにnull引数を渡すと、NullPointerExceptionがスローされます。

APIのノート:
このクラスは、サブタスクが正常に完了したときにタスク・スコープを停止するポリシーを実装します。 shutdownPREVIEWメソッドを使用してタスク・スコープを直接停止する必要はありません。
導入されたバージョン:
21
  • コンストラクタの詳細

    • ShutdownOnSuccess

      public ShutdownOnSuccess(String name, ThreadFactory factory)
      指定された名前およびスレッド・ファクトリで新しいShutdownOnSuccessを構築します。 タスク範囲には、モニタリングおよび管理の目的で任意の名前が付けられます。 スレッド・ファクトリは、サブタスクが「フォーク」PREVIEWの場合に、スレッドをcreateするために使用します。 タスク・スコープは現在のスレッドによって所有されます。

      Constructionは、現在のスレッドの「スコープ値」PREVIEWバインディングを取得して、タスク・スコープで開始されたスレッドによる継承を取得します。 クラス説明の「ツリー構造」セクションには、スコープ値バインディングの継承を目的として、親子関係が暗黙的に確立される方法の詳細が示されています。

      パラメータ:
      name - タスク範囲の名前。NULLにできます
      factory - スレッドのファクトリ
    • ShutdownOnSuccess

      public ShutdownOnSuccess()
      仮想スレッドを作成する名前のない新しいShutdownOnSuccessを構築します。
      実装要件:
      このコンストラクタは、nullという名前の2引数コンストラクタと、仮想スレッドを作成するスレッド・ファクトリの起動と同等です。
  • メソッドの詳細

    • join

      このタスク・スコープで開始されたサブタスクが「successfully」PREVIEWに完了するまで、またはすべてのサブタスクが完了するまで待機します。

      このメソッドは、このタスク・スコープのすべてのスレッドstartedPREVIEWが実行の完了を待機して、すべてのサブタスクを待機します。 すべてのスレッドが終了するか、サブタスクが正常に完了するか、現在のスレッドがinterruptedになると、待機が停止します。 また、このタスク・スコープを停止するためにshutdownPREVIEWメソッドを直接起動すると、待機も停止します。

      このメソッドは、タスク・スコープ所有者のみが起動できます。

      オーバーライド:
      クラスStructuredTaskScopePREVIEW<T>join
      戻り値:
      このタスクの範囲
      例外:
      IllegalStateException - このタスク範囲がクローズされている場合
      WrongThreadException - 現在のスレッドがタスク・スコープ所有者でない場合
      InterruptedException - 待機中に割込みが発生した場合
    • joinUntil

      このタスク・スコープで開始されたサブタスクが「successfully」PREVIEWに完了するまで、またはすべてのサブタスクが完了するまで、指定した期限まで待機します。

      このメソッドは、このタスク・スコープのすべてのスレッドstartedPREVIEWが実行の完了を待機して、すべてのサブタスクを待機します。 すべてのスレッドが終了するか、サブタスクが正常に完了するか、期限に達するか、現在のスレッドがinterruptedになると、待機が停止します。 また、このタスク・スコープを停止するためにshutdownPREVIEWメソッドを直接起動すると、待機も停止します。

      このメソッドは、タスク・スコープ所有者のみが起動できます。

      オーバーライド:
      クラスStructuredTaskScopePREVIEW<T>joinUntil
      パラメータ:
      deadline - 期限
      戻り値:
      このタスクの範囲
      例外:
      IllegalStateException - このタスク範囲がクローズされている場合
      WrongThreadException - 現在のスレッドがタスク・スコープ所有者でない場合
      InterruptedException - 待機中に割込みが発生した場合
      TimeoutException - 待機中に期限に達した場合
    • result

      public T result() throws ExecutionException
      「successfully」PREVIEWに完了した最初のサブタスクの結果を返します。

      サブタスクが正常に完了せず、サブタスクfailedPREVIEWがスローされると、ExecutionExceptionはサブタスクの例外とともにcauseとしてスローされます。

      戻り値:
      successfullyPREVIEWを完了した最初のサブタスクの結果
      例外:
      ExecutionException - サブタスクが正常に完了せず、少なくとも1つのサブタスクが失敗した場合
      IllegalStateException - サブタスクが完了していないか、タスクのスコープ所有者がフォーク後に結合しなかった場合
      WrongThreadException - 現在のスレッドがタスク・スコープ所有者でない場合
    • result

      public <X extends Throwable> T result(Function<Throwable,? extends X> esf) throws X
      「successfully」PREVIEWに完了した最初のサブタスクの結果を返します。それ以外の場合は、指定された例外指定関数によって生成された例外をスローします。

      サブタスクが正常に完了せず、サブタスクfailedPREVIEWが完了すると、サブタスクの例外を指定して例外関数が呼び出されます。

      型パラメータ:
      X - スローされる例外のタイプ
      パラメータ:
      esf - 例外供給機能
      戻り値:
      結果で完了した最初のサブタスクの結果
      例外:
      X - サブタスクが正常に完了せず、少なくとも1つのサブタスクが失敗した場合
      IllegalStateException - サブタスクが完了していないか、タスクのスコープ所有者がフォーク後に結合しなかった場合
      WrongThreadException - 現在のスレッドがタスク・スコープ所有者でない場合