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
-
内部类总结
在类 jdk.incubator.concurrent.StructuredTaskScope 中声明的嵌套类/接口
StructuredTaskScope.ShutdownOnFailure, StructuredTaskScope.ShutdownOnSuccess<T> -
构造方法总结
构造方法构造方法描述构造一个新的未命名的ShutdownOnFailure来创建虚拟线程。ShutdownOnFailure(String name, ThreadFactory factory) 使用给定的名称和线程工厂构造一个新的ShutdownOnFailure。 -
方法总结
修饰符和类型方法描述返回以异常完成的第一个子任务的异常。protected voidhandleComplete(Future<Object> future) 当第一次使用Future为异常完成(异常或取消)的任务调用时,关闭给定的任务范围。join()等待所有线程完成或任务范围关闭。等待所有线程完成或任务范围关闭,直到给定的截止日期。void如果子任务异常完成则抛出。<X extends Throwable>
voidthrowIfFailed(Function<Throwable, ? extends X> esf) 如果子任务异常完成,则抛出由给定异常提供函数产生的异常。在类 jdk.incubator.concurrent.StructuredTaskScope 中声明的方法
close, fork, shutdown
-
构造方法详细信息
-
ShutdownOnFailure
使用给定的名称和线程工厂构造一个新的ShutdownOnFailure。出于监视和管理的目的,可选择命名任务范围。当任务为 forked 时,线程工厂用于create线程。任务范围由当前线程拥有。此方法捕获当前线程的 作用域值 绑定,以供在任务范围内创建的线程继承。类描述中的 树结构 部分详细说明了如何为继承作用域值绑定而隐式建立父子关系。
- 参数:
name- 任务范围的名称,可以为空factory- 线程工厂
-
ShutdownOnFailure
public ShutdownOnFailure()构造一个新的未命名的ShutdownOnFailure来创建虚拟线程。此构造函数等效于调用名称为
null的 2-arg 构造函数和创建虚拟线程的线程工厂。
-
-
方法详情
-
handleComplete
当第一次使用Future为异常完成(异常或取消)的任务调用时,关闭给定的任务范围。- 重写:
handleComplete在类StructuredTaskScope<Object>中- 参数:
future- 完成的任务- 参见:
-
join
等待所有线程完成或任务范围关闭。此方法等待任务范围内启动的所有线程完成执行(任务和handleComplete方法),调用shutdown方法关闭任务范围,或者当前线程为 interrupted 。此方法只能由任务范围所有者调用。
- 重写:
join在类StructuredTaskScope<Object>中- 返回:
- 此任务范围
- 抛出:
IllegalStateException- 如果此任务范围已关闭WrongThreadException- 如果当前线程不是所有者InterruptedException- 如果在等待时被打断
-
joinUntil
public StructuredTaskScope.ShutdownOnFailure joinUntil(Instant deadline) throws InterruptedException , TimeoutException 等待所有线程完成或任务范围关闭,直到给定的截止日期。此方法等待任务作用域中启动的所有线程完成执行(任务和handleComplete方法),调用shutdown方法关闭任务作用域,当前线程为 interrupted ,或达到截止日期。此方法只能由任务范围所有者调用。
- 重写:
joinUntil在类StructuredTaskScope<Object>中- 参数:
deadline- 截止日期- 返回:
- 此任务范围
- 抛出:
IllegalStateException- 如果此任务范围已关闭WrongThreadException- 如果当前线程不是所有者InterruptedException- 如果在等待时被打断TimeoutException- 如果在等待时达到截止日期
-
exception
返回以异常完成的第一个子任务的异常。如果没有子任务以异常完成但已取消的子任务被通知给handleComplete方法,则返回CancellationException。如果没有子任务异常完成,则返回一个空的Optional。 -
throwIfFailed
如果子任务异常完成则抛出。如果任何子任务完成但出现异常,则抛出ExecutionException,但第一个子任务失败为 原因。如果没有子任务以异常完成但已取消的子任务被通知给handleComplete方法,则抛出CancellationException。如果没有子任务异常完成,则此方法不执行任何操作。- API 注意:
-
此方法旨在由任务范围所有者在调用
join(或joinUntil)后调用。未来的版本可能会增加强制执行以防止其他线程或在加入之前调用该方法。 - 抛出:
ExecutionException- 如果子任务完成但出现异常CancellationException- 如果没有子任务异常完成但子任务被取消
-
throwIfFailed
如果子任务异常完成,则抛出由给定异常提供函数产生的异常。如果任何子任务完成但出现异常,则调用该函数,但第一个子任务失败。如果没有子任务以异常完成但已取消的子任务被通知给handleComplete方法,则使用CancellationException调用该函数。抛出函数返回的异常。如果没有子任务异常完成,则此方法不执行任何操作。
-