ThreadFactoryBuilder
Date: 2016-05-24

com.google.common.util.concurrent

## Class ThreadFactoryBuilder

- java.lang.Object
- - com.google.common.util.concurrent.ThreadFactoryBuilder

-     public final class ThreadFactoryBuilder
      extends java.lang.Object

  A ThreadFactory builder, providing any combination of these features:
  - whether threads should be marked as daemon threads
  - a naming format
  - a thread priority
  - an uncaught exception handler
  - a backing thread factory

  If no backing thread factory is provided, a default backing thread factory is used as if by calling `setThreadFactory(``Executors.defaultThreadFactory()``)`.

  Since:
    4.0

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `ThreadFactoryBuilder()` Creates a new `ThreadFactory` builder.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.util.concurrent.ThreadFactory` | `build()` Returns a new thread factory using the options supplied during the building process.
    `ThreadFactoryBuilder` | `setDaemon(boolean daemon)` Sets daemon or not for new threads created with this ThreadFactory.
    `ThreadFactoryBuilder` | `setNameFormat(java.lang.String nameFormat)` Sets the naming format to use when naming threads (`Thread.setName(java.lang.String)`) which are created with this ThreadFactory.
    `ThreadFactoryBuilder` | `setPriority(int priority)` Sets the priority for new threads created with this ThreadFactory.
    `ThreadFactoryBuilder` | `setThreadFactory(java.util.concurrent.ThreadFactory backingThreadFactory)` Sets the backing `ThreadFactory` for new threads created with this ThreadFactory.
    `ThreadFactoryBuilder` | `setUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler uncaughtExceptionHandler)` Sets the `Thread.UncaughtExceptionHandler` for new threads created with this ThreadFactory.

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

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

- - ### Constructor Detail

    - #### ThreadFactoryBuilder

          public ThreadFactoryBuilder()

      Creates a new `ThreadFactory` builder.

  - ### Method Detail

    - #### setNameFormat

          public ThreadFactoryBuilder setNameFormat(java.lang.String nameFormat)

      Sets the naming format to use when naming threads (`Thread.setName(java.lang.String)`) which are created with this ThreadFactory.
      Parameters:
        `nameFormat` - a `String.format(String, Object...)`-compatible format String, to which a unique integer (0, 1, etc.) will be supplied as the single parameter. This integer will be unique to the built instance of the ThreadFactory and will be assigned sequentially. For example, `"rpc-pool-%d"` will generate thread names like `"rpc-pool-0"`, `"rpc-pool-1"`, `"rpc-pool-2"`, etc.
      Returns:
        this for the builder pattern

    - #### setDaemon

          public ThreadFactoryBuilder setDaemon(boolean daemon)

      Sets daemon or not for new threads created with this ThreadFactory.
      Parameters:
        `daemon` - whether or not new Threads created with this ThreadFactory will be daemon threads
      Returns:
        this for the builder pattern

    - #### setPriority

          public ThreadFactoryBuilder setPriority(int priority)

      Sets the priority for new threads created with this ThreadFactory.
      Parameters:
        `priority` - the priority for new Threads created with this ThreadFactory
      Returns:
        this for the builder pattern

    - #### setUncaughtExceptionHandler

          public ThreadFactoryBuilder setUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler uncaughtExceptionHandler)

      Sets the `Thread.UncaughtExceptionHandler` for new threads created with this ThreadFactory.
      Parameters:
        `uncaughtExceptionHandler` - the uncaught exception handler for new Threads created with this ThreadFactory
      Returns:
        this for the builder pattern

    - #### setThreadFactory

          public ThreadFactoryBuilder setThreadFactory(java.util.concurrent.ThreadFactory backingThreadFactory)

      Sets the backing `ThreadFactory` for new threads created with this ThreadFactory. Threads will be created by invoking #newThread(Runnable) on this backing `ThreadFactory`.
      Parameters:
        `backingThreadFactory` - the backing `ThreadFactory` which will be delegated to during thread creation.
      Returns:
        this for the builder pattern
      See Also:
        `MoreExecutors`

    - #### build

          public java.util.concurrent.ThreadFactory build()

      Returns a new thread factory using the options supplied during the building process. After building, it is still possible to change the options used to build the ThreadFactory and/or build again. State is not shared amongst built instances.
      Returns:
        the fully constructed `ThreadFactory`