- All Known Subinterfaces:
Thread.Builder.OfPlatformPREVIEW
,Thread.Builder.OfVirtualPREVIEW
- Enclosing class:
Thread
public static sealed interface Thread.Builder
permits Thread.Builder.OfPlatformPREVIEW, Thread.Builder.OfVirtualPREVIEW (not exhaustive)
Builder
is a preview API of the Java platform.
Preview features may be removed in a future release, or upgraded to permanent features of the Java platform.
A builder for
Thread
and ThreadFactory
objects.
Builder
defines methods to set Thread
properties such
as the thread name
. This includes properties that would
otherwise be inherited. Once set, a
Thread
or ThreadFactory
is created with the following methods:
- The unstarted method creates a new
unstarted
Thread
to run a task. TheThread
'sstart
method must be invoked to schedule the thread to execute. - The start method creates a new
Thread
to run a task and schedules the thread to execute. - The factory method creates a
ThreadFactory
.
A Thread.Builder
is not thread safe. The ThreadFactory
returned by the builder's factory()
method is thread safe.
Unless otherwise specified, passing a null argument to a method in
this interface causes a NullPointerException
to be thrown.
- Since:
- 19
- See Also:
-
Nested Class Summary
Modifier and TypeInterfaceDescriptionstatic interface
Preview.A builder for creating a platformThread
orThreadFactory
that creates platform threads.static interface
Preview.A builder for creating a virtualThread
orThreadFactory
that creates virtual threads. -
Method Summary
Modifier and TypeMethodDescriptionallowSetThreadLocals
(boolean allow) Sets whether the thread is allowed to set values for its copy of thread-local variables.factory()
Returns aThreadFactory
to create threads from the current state of the builder.inheritInheritableThreadLocals
(boolean inherit) Sets whether the thread inherits the initial values of inheritable-thread-local variables from the constructing thread.Sets the thread name.Sets the thread name to be the concatenation of a string prefix and the string representation of a counter value.Creates a newThread
from the current state of the builder and schedules it to execute.Sets the uncaught exception handler.Creates a newThread
from the current state of the builder to run the given task.
-
Method Details
-
name
Sets the thread name.- Parameters:
name
- thread name- Returns:
- this builder
-
name
Sets the thread name to be the concatenation of a string prefix and the string representation of a counter value. The counter's initial value isstart
. It is incremented after aThread
is created with this builder so that the next thread is named with the new counter value. AThreadFactory
created with this builder is seeded with the current value of the counter. TheThreadFactory
increments its copy of the counter afternewThread
is used to create aThread
.- API Note:
- The following example creates a builder that is invoked twice to start
two threads named "
worker-0
" and "worker-1
".Thread.Builder builder = Thread.ofPlatform().name("worker-", 0); Thread t1 = builder.start(task1); // name "worker-0" Thread t2 = builder.start(task2); // name "worker-1"
- Parameters:
prefix
- thread name prefixstart
- the starting value of the counter- Returns:
- this builder
- Throws:
IllegalArgumentException
- if start is negative
-
allowSetThreadLocals
Sets whether the thread is allowed to set values for its copy of thread-local variables. The default is to allow. If not allowed, then any attempt by the thread to set a value for a thread-local with theThreadLocal.set(Object)
method throwsUnsupportedOperationException
. Any attempt to set the thread's context class loader withsetContextClassLoader
also throws. TheThreadLocal.get()
method always returns the initial-value when thread locals are not allowed.- API Note:
- This method is intended for cases where there are a large number of threads and where potentially unbounded memory usage due to thread locals is a concern. Disallowing a thread to set its copy of thread-local variables creates the potential for exceptions at run-time so great care is required when the thread is used to invoke arbitrary code.
- Parameters:
allow
-true
to allow,false
to disallow- Returns:
- this builder
-
inheritInheritableThreadLocals
Sets whether the thread inherits the initial values of inheritable-thread-local variables from the constructing thread. The default is to inherit.The initial values of
InheritableThreadLocal
s are never inherited whenallowSetThreadLocals(boolean)
is used to disallow the thread to have its own copy of thread-local variables.- Parameters:
inherit
-true
to inherit,false
to not inherit- Returns:
- this builder
-
uncaughtExceptionHandler
Sets the uncaught exception handler.- Parameters:
ueh
- uncaught exception handler- Returns:
- this builder
-
unstarted
Creates a newThread
from the current state of the builder to run the given task. TheThread
'sstart
method must be invoked to schedule the thread to execute.- Parameters:
task
- the object to run when the thread executes- Returns:
- a new unstarted Thread
- Throws:
SecurityException
- if denied by the security manager (See Interaction with security manager when creating platform threads)- See Also:
-
start
Creates a newThread
from the current state of the builder and schedules it to execute.- Parameters:
task
- the object to run when the thread executes- Returns:
- a new started Thread
- Throws:
SecurityException
- if denied by the security manager (See Interaction with security manager when creating platform threads)- See Also:
-
factory
ThreadFactory factory()Returns aThreadFactory
to create threads from the current state of the builder. The returned thread factory is safe for use by multiple concurrent threads.- Returns:
- a thread factory to create threads
-
Builder
when preview features are enabled.