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