- All Implemented Interfaces:
AutoCloseable
- Enclosing class:
StructuredTaskScopePREVIEW<T>
ShutdownOnFailure
is a preview API of the Java platform.
StructuredTaskScope
that captures the exception of the first subtask to
failPREVIEW. Once captured, it shuts downPREVIEW the task scope to interrupt unfinished threads and wakeup the task
scope owner. The policy implemented by this class is intended for cases where the
results for all subtasks are required ("invoke all"); if any subtask fails then the
results of other unfinished subtasks are no longer needed.
Unless otherwise specified, passing a null
argument to a method
in this class will cause a NullPointerException
to be thrown.
-
Nested Class Summary
Nested classes/interfaces declared in class java.util.concurrent.StructuredTaskScopePREVIEW
StructuredTaskScope.ShutdownOnFailurePREVIEW, StructuredTaskScope.ShutdownOnSuccessPREVIEW<T>, StructuredTaskScope.SubtaskPREVIEW<T>
-
Constructor Summary
ConstructorDescriptionConstructs a new unnamedShutdownOnFailure
that creates virtual threads.ShutdownOnFailure
(String name, ThreadFactory factory) Constructs a newShutdownOnFailure
with the given name and thread factory. -
Method Summary
Modifier and TypeMethodDescriptionjoin()
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
Constructs a newShutdownOnFailure
with the given name and thread factory. The task scope is optionally named for the purposes of monitoring and management. The thread factory is used tocreate
threads when subtasks are forkedPREVIEW. The task scope is owned by the current thread.Construction captures the current thread's scoped valuePREVIEW bindings for inheritance by threads started in the task scope. The Tree Structure section in the class description details how parent-child relations are established implicitly for the purpose of inheritance of scoped value bindings.
- Parameters:
name
- the name of the task scope, can be nullfactory
- the thread factory
-
ShutdownOnFailure
public ShutdownOnFailure()Constructs a new unnamedShutdownOnFailure
that creates virtual threads.- Implementation Requirements:
- This constructor is equivalent to invoking the 2-arg constructor with
a name of
null
and a thread factory that creates virtual threads.
-
-
Method Details
-
join
Wait for all subtasks started in this task scope to complete or for a subtask to failPREVIEW.This method waits for all subtasks by waiting for all threads startedPREVIEW in this task scope to finish execution. It stops waiting when all threads finish, a subtask fails, or the current thread is interrupted. It also stops waiting if the
shutdown
PREVIEW method is invoked directly to shut down this task scope.This method may only be invoked by the task scope owner.
- Overrides:
join
in classStructuredTaskScopePREVIEW<Object>
- Returns:
- this task scope
- Throws:
IllegalStateException
- if this task scope is closedWrongThreadException
- if the current thread is not the task scope ownerInterruptedException
- if interrupted while waiting
-
joinUntil
public StructuredTaskScope.ShutdownOnFailurePREVIEW joinUntil(Instant deadline) throws InterruptedException, TimeoutException Wait for all subtasks started in this task scope to complete or for a subtask to failPREVIEW, up to the given deadline.This method waits for all subtasks by waiting for all threads startedPREVIEW in this task scope to finish execution. It stops waiting when all threads finish, a subtask fails, the deadline is reached, or the current thread is interrupted. It also stops waiting if the
shutdown
PREVIEW method is invoked directly to shut down this task scope.This method may only be invoked by the task scope owner.
- Overrides:
joinUntil
in classStructuredTaskScopePREVIEW<Object>
- Parameters:
deadline
- the deadline- Returns:
- this task scope
- Throws:
IllegalStateException
- if this task scope is closedWrongThreadException
- if the current thread is not the task scope ownerInterruptedException
- if interrupted while waitingTimeoutException
- if the deadline is reached while waiting
-
exception
Returns the exception of the first subtask that failedPREVIEW. If no subtasks failed then an emptyOptional
is returned.- Returns:
- the exception for the first subtask to fail or an empty optional if no subtasks failed
- Throws:
WrongThreadException
- if the current thread is not the task scope ownerIllegalStateException
- if the task scope owner did not join after forking
-
throwIfFailed
Throws if a subtask failedPREVIEW. If any subtask failed with an exception thenExecutionException
is thrown with the exception of the first subtask to fail as the cause. This method does nothing if no subtasks failed.- Throws:
ExecutionException
- if a subtask failedWrongThreadException
- if the current thread is not the task scope ownerIllegalStateException
- if the task scope owner did not join after forking
-
throwIfFailed
Throws the exception produced by the given exception supplying function if a subtask failedPREVIEW. If any subtask failed with an exception then the function is invoked with the exception of the first subtask to fail. The exception returned by the function is thrown. This method does nothing if no subtasks failed.- Type Parameters:
X
- type of the exception to be thrown- Parameters:
esf
- the exception supplying function- Throws:
X
- produced by the exception supplying functionWrongThreadException
- if the current thread is not the task scope ownerIllegalStateException
- if the task scope owner did not join after forking
-
ShutdownOnFailure
when preview features are enabled.