モジュール 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
  • コンストラクタの詳細

    • ShutdownOnSuccess

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

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

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

      public ShutdownOnSuccess()
      仮想スレッドを作成する名前のない新しいShutdownOnSuccessを構築します。

      このコンストラクタは、nullという名前の2引数コンストラクタと、仮想スレッドを作成するスレッド・ファクトリの起動と同等です。

  • メソッドの詳細

    • handleComplete

      protected void handleComplete(Future<T> future)
      結果で完了したタスクの Futureを使用して初めて起動されたときに、指定されたタスク範囲を停止します。
      オーバーライド:
      クラスStructuredTaskScope<T>handleComplete
      パラメータ:
      future - 完了済タスク
      関連項目:
    • join

      すべてのスレッドが終了するか、タスク範囲がシャットダウンするまで待ちます。 このメソッドは、タスク・スコープで開始されたすべてのスレッドの実行が(タスクとhandleCompleteメソッドの両方)、タスク・スコープを停止するためにshutdownメソッドが呼び出されるか、現在のスレッドがinterruptedになるまで待機します。

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

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

      指定された期限まで、すべてのスレッドが終了するか、タスク範囲がシャットダウンするまで待機します。 このメソッドは、タスク・スコープで開始されたすべてのスレッドの実行が(タスクと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

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

      結果付きでサブタスクが完了せず、例外ありでサブタスクが完了した場合、例外供給機能が例外ありで起動されます。 取り消されたサブタスクのみがhandleCompleteメソッドに通知された場合、例外供給関数はCancellationExceptionで起動されます。

      APIのノート:
      このメソッドは、タスク・スコープ所有者がjoin (またはjoinUntil)を起動した後に起動することを目的としています。 将来のリリースでは、メソッドがほかのスレッドによって呼び出されるのを防ぐため、または結合前に強制が追加される可能性があります。
      型パラメータ:
      X - スローされる例外のタイプ
      パラメータ:
      esf - 例外供給機能
      戻り値:
      結果で完了した最初のサブタスクの結果
      例外:
      X - 結果付きで完了したサブタスクがない場合
      IllegalStateException - ハンドル・メソッドが完了したサブタスクで呼び出されなかった場合