## Uses of Interface
java.util.concurrent.ThreadFactory

- Packages that use ThreadFactory
  Package | Description
  --- | ---
  java.lang.ref | Provides reference-object classes, which support a limited degree of interaction with the garbage collector.
  java.nio.channels | Defines channels, which represent connections to entities that are capable of performing I/O operations, such as files and sockets; defines selectors, for multiplexed, non-blocking I/O operations.
  java.nio.channels.spi | Service-provider classes for the `java.nio.channels` package.
  java.util.concurrent | Utility classes commonly useful in concurrent programming.

- - ### Uses of ThreadFactory in java.lang.ref

    Methods in java.lang.ref with parameters of type ThreadFactory
    Modifier and Type | Method | Description
    --- | --- | ---
    `static Cleaner` | Cleaner.`create​(ThreadFactory threadFactory)` | Returns a new `Cleaner` using a `Thread` from the `ThreadFactory`.

  - ### Uses of ThreadFactory in java.nio.channels

    Methods in java.nio.channels with parameters of type ThreadFactory
    Modifier and Type | Method | Description
    --- | --- | ---
    `static AsynchronousChannelGroup` | AsynchronousChannelGroup.`withFixedThreadPool​(int nThreads, ThreadFactory threadFactory)` | Creates an asynchronous channel group with a fixed thread pool.

  - ### Uses of ThreadFactory in java.nio.channels.spi

    Methods in java.nio.channels.spi with parameters of type ThreadFactory
    Modifier and Type | Method | Description
    --- | --- | ---
    `abstract AsynchronousChannelGroup` | AsynchronousChannelProvider.`openAsynchronousChannelGroup​(int nThreads, ThreadFactory threadFactory)` | Constructs a new asynchronous channel group with a fixed thread pool.

  - ### Uses of ThreadFactory in java.util.concurrent

    Methods in java.util.concurrent that return ThreadFactory
    Modifier and Type | Method | Description
    --- | --- | ---
    `static ThreadFactory` | Executors.`defaultThreadFactory​()` | Returns a default thread factory used to create new threads.
    `ThreadFactory` | ThreadPoolExecutor.`getThreadFactory​()` | Returns the thread factory used to create new threads.
    `static ThreadFactory` | Executors.`privilegedThreadFactory​()` | Returns a thread factory used to create new threads that have the same permissions as the current thread.

    Methods in java.util.concurrent with parameters of type ThreadFactory
    Modifier and Type | Method | Description
    --- | --- | ---
    `static ExecutorService` | Executors.`newCachedThreadPool​(ThreadFactory threadFactory)` | Creates a thread pool that creates new threads as needed, but will reuse previously constructed threads when they are available, and uses the provided ThreadFactory to create new threads when needed.
    `static ExecutorService` | Executors.`newFixedThreadPool​(int nThreads, ThreadFactory threadFactory)` | Creates a thread pool that reuses a fixed number of threads operating off a shared unbounded queue, using the provided ThreadFactory to create new threads when needed.
    `static ScheduledExecutorService` | Executors.`newScheduledThreadPool​(int corePoolSize, ThreadFactory threadFactory)` | Creates a thread pool that can schedule commands to run after a given delay, or to execute periodically.
    `static ExecutorService` | Executors.`newSingleThreadExecutor​(ThreadFactory threadFactory)` | Creates an Executor that uses a single worker thread operating off an unbounded queue, and uses the provided ThreadFactory to create a new thread when needed.
    `static ScheduledExecutorService` | Executors.`newSingleThreadScheduledExecutor​(ThreadFactory threadFactory)` | Creates a single-threaded executor that can schedule commands to run after a given delay, or to execute periodically.
    `void` | ThreadPoolExecutor.`setThreadFactory​(ThreadFactory threadFactory)` | Sets the thread factory used to create new threads.

    Constructors in java.util.concurrent with parameters of type ThreadFactory
    Constructor | Description
    --- | ---
    `ScheduledThreadPoolExecutor​(int corePoolSize, ThreadFactory threadFactory)` | Creates a new `ScheduledThreadPoolExecutor` with the given initial parameters.
    `ScheduledThreadPoolExecutor​(int corePoolSize, ThreadFactory threadFactory, RejectedExecutionHandler handler)` | Creates a new `ScheduledThreadPoolExecutor` with the given initial parameters.
    `ThreadPoolExecutor​(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory)` | Creates a new `ThreadPoolExecutor` with the given initial parameters and default rejected execution handler.
    `ThreadPoolExecutor​(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler)` | Creates a new `ThreadPoolExecutor` with the given initial parameters.