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

    • ShutdownOnFailure

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

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

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

  • メソッドの詳細

    • handleComplete

      protected void handleComplete(Future<Object> future)
      異常な(例外または取消済)を完了したタスクの Futureを使用して初めて、指定されたタスク範囲を停止します。
      オーバーライド:
      クラスStructuredTaskScope<Object>handleComplete
      パラメータ:
      future - 完了済タスク
      関連項目:
    • join

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

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

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

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

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

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

      public Optional<Throwable> exception()
      例外で完了した最初のサブタスクの例外を返します。 例外ありで完了したサブタスクがなく、取り消されたサブタスクがhandleCompleteメソッドに通知された場合、CancellationExceptionが返されます。 異常終了したサブタスクがない場合、空のOptionalが返されます。
      APIのノート:
      このメソッドは、タスク・スコープ所有者がjoin (またはjoinUntil)を起動した後に起動することを目的としています。 将来のリリースでは、メソッドがほかのスレッドによって呼び出されるのを防ぐため、または結合前に強制が追加される可能性があります。
      戻り値:
      異常終了したサブタスクの例外、またはサブタスクが異常終了しなかった場合は空のオプション
    • throwIfFailed

      public void throwIfFailed() throws ExecutionException
      サブタスクが異常終了した場合にスローします。 例外ありで完了したサブタスクがある場合、causeとして失敗する最初のサブタスクを除いて、ExecutionExceptionがスローされます。 例外ありで完了したサブタスクがなく、取り消されたサブタスクがhandleCompleteメソッドに通知された場合、CancellationExceptionがスローされます。 サブタスクが異常終了しなかった場合、このメソッドは何もしません。
      APIのノート:
      このメソッドは、タスク・スコープ所有者がjoin (またはjoinUntil)を起動した後に起動することを目的としています。 将来のリリースでは、メソッドがほかのスレッドによって呼び出されるのを防ぐため、または結合前に強制が追加される可能性があります。
      例外:
      ExecutionException - 例外ありでサブタスクが完了した場合
      CancellationException - 例外ありで完了したサブタスクがなく、サブタスクが取り消された場合
    • throwIfFailed

      public <X extends Throwable> void throwIfFailed(Function<Throwable,? extends X> esf) throws X
      サブタスクが異常終了した場合に、指定された例外供給関数によって生成された例外をスローします。 例外ありで完了したサブタスクがある場合、失敗する最初のサブタスクを除いて関数が起動されます。 例外ありで完了したサブタスクがなく、取り消されたサブタスクがhandleCompleteメソッドに通知された場合、関数は CancellationExceptionを使用してコールされます。 関数によって返された例外がスローされます。 サブタスクが異常終了しなかった場合、このメソッドは何もしません。
      APIのノート:
      このメソッドは、タスク・スコープ所有者がjoin (またはjoinUntil)を起動した後に起動することを目的としています。 将来のリリースでは、メソッドがほかのスレッドによって呼び出されるのを防ぐため、または結合前に強制が追加される可能性があります。
      型パラメータ:
      X - スローされる例外のタイプ
      パラメータ:
      esf - 例外供給機能
      例外:
      X - 例外供給機能によって生成されます