java.lang.Object
java.util.concurrent.StructuredTaskScopePREVIEW<T>
java.util.concurrent.StructuredTaskScope.ShutdownOnSuccess<T>
- 类型参数:
-
T
- 结果类型
- 所有实现的接口:
-
AutoCloseable
- 封闭类:
-
StructuredTaskScope预览<T>
public static final class StructuredTaskScope.ShutdownOnSuccess<T> extends StructuredTaskScopePREVIEW<T>
ShutdownOnSuccess
是 Java 平台的预览 API。
预览功能可能在将来的版本中被移除,或升级为 Java 平台的永久功能。
捕获第一个子任务成功完成的结果的
StructuredTaskScope
。一旦捕获,它会 关闭预览 任务范围以中断未完成的线程并唤醒任务范围所有者。此类实现的策略适用于任何子任务的结果都可以的情况("调用任何"),并且不再需要其他未完成子任务的结果的情况。
除非另有说明,在此类中向方法传递 null
参数将导致抛出 NullPointerException
。
-
Nested Class Summary
Nested classes/interfaces declared in class java.util.concurrent.StructuredTaskScopePREVIEW
StructuredTaskScope.ShutdownOnFailurePREVIEW, StructuredTaskScope.ShutdownOnSuccessPREVIEW<T>, StructuredTaskScope.SubtaskPREVIEW<T>
-
Constructor Summary
ConstructorDescription构造一个新的未命名的ShutdownOnSuccess
,创建虚拟线程。ShutdownOnSuccess
(String name, ThreadFactory factory) 使用给定的名称和线程工厂构造一个新的ShutdownOnSuccess
。 -
Method Summary
Methods declared in class java.util.concurrent.StructuredTaskScopePREVIEW
close, ensureOwnerAndJoined, fork, handleComplete, isShutdown, shutdown
-
Constructor Details
-
ShutdownOnSuccess
使用给定的名称和线程工厂构造一个新的ShutdownOnSuccess
。任务范围可选地用于监视和管理目的命名。线程工厂用于在子任务被forked
预览 时创建线程。任务范围由当前线程拥有。构造函数捕获当前线程的 scoped value预览 绑定,以便在任务范围内启动的线程继承。类描述中的 树结构 部分详细说明了为了继承 scoped value 绑定而隐式建立父子关系的方式。
- 参数:
-
name
- 任务范围的名称,可以为 null -
factory
- 线程工厂
-
ShutdownOnSuccess
public ShutdownOnSuccess()构造一个新的未命名的ShutdownOnSuccess
,创建虚拟线程。- 实现要求:
-
此构造函数等效于使用名称为
null
和创建虚拟线程的线程工厂调用 2-参数构造函数。
-
-
Method Details
-
join
等待在此任务范围内启动的子任务成功完成 成功预览 或所有子任务完成。此方法通过等待在此任务范围内启动的所有线程 开始预览 执行来等待所有子任务。当所有线程完成、子任务成功完成或当前线程被 中断 时停止等待。如果直接调用
shutdown
预览 方法来关闭此任务范围,也会停止等待。此方法只能由任务范围所有者调用。
- 覆盖:
-
join
在类StructuredTaskScope预览<T>
- 返回:
- 此任务范围
- 抛出:
-
IllegalStateException
- 如果此任务范围已关闭 -
WrongThreadException
- 如果当前线程不是任务范围所有者 -
InterruptedException
- 在等待时被中断
-
joinUntil
public StructuredTaskScope.ShutdownOnSuccessPREVIEW<T> joinUntil(Instant deadline) throws InterruptedException, TimeoutException 等待在此任务范围内启动的子任务成功完成 成功预览 或所有子任务完成,直到给定的截止时间。此方法通过等待在此任务范围内启动的所有线程 开始预览 执行来等待所有子任务。当所有线程完成、子任务成功完成、达到截止时间或当前线程被 中断 时停止等待。如果直接调用
shutdown
预览 方法来关闭此任务范围,也会停止等待。此方法只能由任务范围所有者调用。
- 覆盖:
-
joinUntil
在类StructuredTaskScope预览<T>
- 参数:
-
deadline
- 截止时间 - 返回:
- 此任务范围
- 抛出:
-
IllegalStateException
- 如果此任务范围已关闭 -
WrongThreadException
- 如果当前线程不是任务范围所有者 -
InterruptedException
- 在等待时被中断 -
TimeoutException
- 如果等待时达到截止时间
-
result
- 返回:
- 第一个子任务完成的结果成功预览
- 抛出:
-
ExecutionException
- 如果没有子任务成功完成,但至少有一个子任务失败 -
IllegalStateException
- 如果没有子任务完成或任务范围所有者在分叉后未加入 -
WrongThreadException
- 如果当前线程不是任务范围所有者
-
result
- 类型参数:
-
X
- 要抛出的异常类型 - 参数:
-
esf
- 异常提供函数 - 返回:
- 第一个完成带有结果的子任务的结果
- 抛出:
-
X
- 如果没有子任务成功完成,但至少有一个子任务失败 -
IllegalStateException
- 如果没有子任务完成或任务范围所有者在分叉后未加入 -
WrongThreadException
- 如果当前线程不是任务范围所有者
-
ShutdownOnSuccess
。