类 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。出于监视和管理的目的,可选择命名任务范围。当任务为 forked 时,线程工厂用于 create 线程。任务范围由当前线程拥有。

      此方法捕获当前线程的 作用域值 绑定,以供在任务范围内创建的线程继承。类描述中的 树结构 部分详细说明了如何为继承作用域值绑定而隐式建立父子关系。

      参数:
      name - 任务范围的名称,可以为空
      factory - 线程工厂
    • ShutdownOnFailure

      public ShutdownOnFailure()
      构造一个新的未命名的 ShutdownOnFailure 来创建虚拟线程。

      此构造函数等效于调用名称为 null 的 2-arg 构造函数和创建虚拟线程的线程工厂。

  • 方法详情

    • handleComplete

      protected void handleComplete(Future <Object > future)
      当第一次使用 Future 为异常完成(异常或取消)的任务调用时,关闭给定的任务范围。
      重写:
      handleComplete 在类 StructuredTaskScope<Object>
      参数:
      future - 完成的任务
      参见:
    • join

      等待所有线程完成或任务范围关闭。此方法等待任务范围内启动的所有线程完成执行(任务和 handleComplete 方法),调用 shutdown 方法关闭任务范围,或者当前线程为 interrupted

      此方法只能由任务范围所有者调用。

      重写:
      join 在类 StructuredTaskScope<Object>
      返回:
      此任务范围
      抛出:
      IllegalStateException - 如果此任务范围已关闭
      WrongThreadException - 如果当前线程不是所有者
      InterruptedException - 如果在等待时被打断
    • joinUntil

      等待所有线程完成或任务范围关闭,直到给定的截止日期。此方法等待任务作用域中启动的所有线程完成执行(任务和 handleComplete 方法),调用 shutdown 方法关闭任务作用域,当前线程为 interrupted ,或达到截止日期。

      此方法只能由任务范围所有者调用。

      重写:
      joinUntil 在类 StructuredTaskScope<Object>
      参数:
      deadline - 截止日期
      返回:
      此任务范围
      抛出:
      IllegalStateException - 如果此任务范围已关闭
      WrongThreadException - 如果当前线程不是所有者
      InterruptedException - 如果在等待时被打断
      TimeoutException - 如果在等待时达到截止日期
    • exception

      public Optional <Throwable > exception()
      返回以异常完成的第一个子任务的异常。如果没有子任务以异常完成但已取消的子任务被通知给 handleComplete 方法,则返回 CancellationException。如果没有子任务异常完成,则返回一个空的Optional
      API 注意:
      此方法旨在由任务范围所有者在调用 join (或 joinUntil )后调用。未来的版本可能会增加强制执行以防止其他线程或在加入之前调用该方法。
      返回:
      异常完成的子任务的异常或如果没有子任务异常完成的空可选
    • throwIfFailed

      public void throwIfFailed() throws ExecutionException
      如果子任务异常完成则抛出。如果任何子任务完成但出现异常,则抛出 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 - 由异常提供函数产生