org.springframework.util

## Class CustomizableThreadCreator

- java.lang.Object
- - org.springframework.util.CustomizableThreadCreator

- All Implemented Interfaces:
    Serializable
  Direct Known Subclasses:
    CustomizableThreadFactory, SimpleAsyncTaskExecutor

      public class CustomizableThreadCreator
      extends Object
      implements Serializable

  Simple customizable helper class for creating new `Thread` instances. Provides various bean properties: thread name prefix, thread priority, etc.

  Serves as base class for thread factories such as `CustomizableThreadFactory`.

  Since:
    2.0.3
  Author:
    Juergen Hoeller
  See Also:
    `CustomizableThreadFactory`, Serialized Form

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `CustomizableThreadCreator()` Create a new CustomizableThreadCreator with default thread name prefix.
    `CustomizableThreadCreator(String threadNamePrefix)` Create a new CustomizableThreadCreator with the given thread name prefix.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `Thread` | `createThread(Runnable runnable)` Template method for the creation of a new `Thread`.
    `protected String` | `getDefaultThreadNamePrefix()` Build the default thread name prefix for this factory.
    `ThreadGroup` | `getThreadGroup()` Return the thread group that threads should be created in (or `null` for the default group).
    `String` | `getThreadNamePrefix()` Return the thread name prefix to use for the names of newly created threads.
    `int` | `getThreadPriority()` Return the priority of the threads that this factory creates.
    `boolean` | `isDaemon()` Return whether this factory should create daemon threads.
    `protected String` | `nextThreadName()` Return the thread name to use for a newly created `Thread`.
    `void` | `setDaemon(boolean daemon)` Set whether this factory is supposed to create daemon threads, just executing as long as the application itself is running.
    `void` | `setThreadGroup(ThreadGroup threadGroup)` Specify the thread group that threads should be created in.
    `void` | `setThreadGroupName(String name)` Specify the name of the thread group that threads should be created in.
    `void` | `setThreadNamePrefix(String threadNamePrefix)` Specify the prefix to use for the names of newly created threads.
    `void` | `setThreadPriority(int threadPriority)` Set the priority of the threads that this factory creates.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### CustomizableThreadCreator

          public CustomizableThreadCreator()

      Create a new CustomizableThreadCreator with default thread name prefix.

    - #### CustomizableThreadCreator

          public CustomizableThreadCreator(String threadNamePrefix)

      Create a new CustomizableThreadCreator with the given thread name prefix.
      Parameters:
        `threadNamePrefix` - the prefix to use for the names of newly created threads

  - ### Method Detail

    - #### setThreadNamePrefix

          public void setThreadNamePrefix(String threadNamePrefix)

      Specify the prefix to use for the names of newly created threads. Default is "SimpleAsyncTaskExecutor-".

    - #### getThreadNamePrefix

          public String getThreadNamePrefix()

      Return the thread name prefix to use for the names of newly created threads.

    - #### setThreadPriority

          public void setThreadPriority(int threadPriority)

      Set the priority of the threads that this factory creates. Default is 5.
      See Also:
        `Thread.NORM_PRIORITY`

    - #### getThreadPriority

          public int getThreadPriority()

      Return the priority of the threads that this factory creates.

    - #### setDaemon

          public void setDaemon(boolean daemon)

      Set whether this factory is supposed to create daemon threads, just executing as long as the application itself is running.

      Default is "false": Concrete factories usually support explicit cancelling. Hence, if the application shuts down, Runnables will by default finish their execution.

      Specify "true" for eager shutdown of threads which still actively execute a `Runnable` at the time that the application itself shuts down.

      See Also:
        `Thread.setDaemon(boolean)`

    - #### isDaemon

          public boolean isDaemon()

      Return whether this factory should create daemon threads.

    - #### setThreadGroupName

          public void setThreadGroupName(String name)

      Specify the name of the thread group that threads should be created in.
      See Also:
        `setThreadGroup(java.lang.ThreadGroup)`

    - #### setThreadGroup

          public void setThreadGroup(ThreadGroup threadGroup)

      Specify the thread group that threads should be created in.
      See Also:
        `setThreadGroupName(java.lang.String)`

    - #### getThreadGroup

          public ThreadGroup getThreadGroup()

      Return the thread group that threads should be created in (or `null` for the default group).

    - #### createThread

          public Thread createThread(Runnable runnable)

      Template method for the creation of a new `Thread`.

      The default implementation creates a new Thread for the given `Runnable`, applying an appropriate thread name.

      Parameters:
        `runnable` - the Runnable to execute
      See Also:
        `nextThreadName()`

    - #### nextThreadName

          protected String nextThreadName()

      Return the thread name to use for a newly created `Thread`.

      The default implementation returns the specified thread name prefix with an increasing thread count appended: e.g. "SimpleAsyncTaskExecutor-0".

      See Also:
        `getThreadNamePrefix()`

    - #### getDefaultThreadNamePrefix

          protected String getDefaultThreadNamePrefix()

      Build the default thread name prefix for this factory.
      Returns:
        the default thread name prefix (never `null`)