java.lang.Object
jdk.incubator.concurrent.StructuredTaskScope <T>
jdk.incubator.concurrent.StructuredTaskScope.ShutdownOnSuccess<T>
- 类型参数:
T- 结果类型
- 所有已实现的接口:
AutoCloseable
- 封闭类:
StructuredTaskScope<T>
一个
StructuredTaskScope 捕获第一个子任务成功完成的结果。捕获后,它会调用 shutdown 方法来中断未完成的线程并唤醒所有者。此类实现的策略适用于任何子任务的结果都可以(“调用任何”)以及不再需要其他未完成的子任务的结果的情况。
除非另有说明,否则将 null 参数传递给此类中的方法将导致抛出 NullPointerException 。
- 自从:
- 19
-
内部类总结
在类 jdk.incubator.concurrent.StructuredTaskScope 中声明的嵌套类/接口
StructuredTaskScope.ShutdownOnFailure, StructuredTaskScope.ShutdownOnSuccess<T> -
构造方法总结
构造方法构造方法描述构造一个新的未命名的ShutdownOnSuccess来创建虚拟线程。ShutdownOnSuccess(String name, ThreadFactory factory) 使用给定的名称和线程工厂构造一个新的ShutdownOnSuccess。 -
方法总结
修饰符和类型方法描述protected voidhandleComplete(Future<T> future) 第一次使用Future调用时关闭给定的任务范围以完成任务并返回结果。join()等待所有线程完成或任务范围关闭。等待所有线程完成或任务范围关闭,直到给定的截止日期。result()返回以结果完成的第一个子任务的结果。返回第一个以结果完成的子任务的结果,否则抛出由给定异常提供函数产生的异常。在类 jdk.incubator.concurrent.StructuredTaskScope 中声明的方法
close, fork, shutdown
-
构造方法详细信息
-
ShutdownOnSuccess
使用给定的名称和线程工厂构造一个新的ShutdownOnSuccess。出于监视和管理的目的,可选择命名任务范围。当任务为 forked 时,线程工厂用于create线程。任务范围由当前线程拥有。此方法捕获当前线程的 作用域值 绑定,以供在任务范围内创建的线程继承。类描述中的 树结构 部分详细说明了如何为继承作用域值绑定而隐式建立父子关系。
- 参数:
name- 任务范围的名称,可以为空factory- 线程工厂
-
ShutdownOnSuccess
public ShutdownOnSuccess()构造一个新的未命名的ShutdownOnSuccess来创建虚拟线程。此构造函数等效于调用名称为
null的 2-arg 构造函数和创建虚拟线程的线程工厂。
-
-
方法详情
-
handleComplete
第一次使用Future调用时关闭给定的任务范围以完成任务并返回结果。- 重写:
handleComplete在类StructuredTaskScope<T>中- 参数:
future- 完成的任务- 参见:
-
join
等待所有线程完成或任务范围关闭。此方法等待任务范围内启动的所有线程完成执行(任务和handleComplete方法),调用shutdown方法关闭任务范围,或者当前线程为 interrupted 。此方法只能由任务范围所有者调用。
- 重写:
join在类StructuredTaskScope<T>中- 返回:
- 此任务范围
- 抛出:
IllegalStateException- 如果此任务范围已关闭WrongThreadException- 如果当前线程不是所有者InterruptedException- 如果在等待时被打断
-
joinUntil
public StructuredTaskScope.ShutdownOnSuccess <T > joinUntil(Instant deadline) throws InterruptedException , TimeoutException 等待所有线程完成或任务范围关闭,直到给定的截止日期。此方法等待任务作用域中启动的所有线程完成执行(任务和handleComplete方法),调用shutdown方法关闭任务作用域,当前线程为 interrupted ,或达到截止日期。此方法只能由任务范围所有者调用。
- 重写:
joinUntil在类StructuredTaskScope<T>中- 参数:
deadline- 截止日期- 返回:
- 此任务范围
- 抛出:
IllegalStateException- 如果此任务范围已关闭WrongThreadException- 如果当前线程不是所有者InterruptedException- 如果在等待时被打断TimeoutException- 如果在等待时达到截止日期
-
result
返回以结果完成的第一个子任务的结果。当没有子任务以结果完成但任务以异常完成时,将抛出
ExecutionException,异常为 原因。如果只有取消的子任务被通知给handleComplete方法然后CancellationException被抛出。- API 注意:
-
此方法旨在由任务范围所有者在调用
join(或joinUntil)后调用。未来的版本可能会增加强制执行以防止其他线程或在加入之前调用该方法。 - 返回:
- 以结果完成的第一个子任务的结果
- 抛出:
ExecutionException- 如果没有子任务以结果完成但子任务以异常完成CancellationException- 如果所有子任务都被取消IllegalStateException- 如果未使用已完成的子任务调用 handle 方法
-
result
返回第一个以结果完成的子任务的结果,否则抛出由给定异常提供函数产生的异常。当没有子任务以结果完成但子任务以异常完成时,异常提供函数将被调用并带有异常。如果只有取消的子任务被通知给
handleComplete方法,那么异常提供函数将被调用CancellationException。- API 注意:
-
此方法旨在由任务范围所有者在调用
join(或joinUntil)后调用。未来的版本可能会增加强制执行以防止其他线程或在加入之前调用该方法。 - 类型参数:
X- 要抛出的异常类型- 参数:
esf- 异常提供函数- 返回:
- 以结果完成的第一个子任务的结果
- 抛出:
X- 如果没有子任务完成并有结果IllegalStateException- 如果未使用已完成的子任务调用 handle 方法
-