java.util.concurrent

## Class ForkJoinWorkerThread

- java.lang.Object
- - java.lang.Thread
  - - java.util.concurrent.ForkJoinWorkerThread

- All Implemented Interfaces:
    Runnable

      public class ForkJoinWorkerThread
      extends Thread

  A thread managed by a `ForkJoinPool`, which executes `ForkJoinTask`s. This class is subclassable solely for the sake of adding functionality -- there are no overridable methods dealing with scheduling or execution. However, you can override initialization and termination methods surrounding the main task processing loop. If you do create such a subclass, you will also need to supply a custom `ForkJoinPool.ForkJoinWorkerThreadFactory` to use it in a `ForkJoinPool`.
  Since:
    1.7
  Author:
    Doug Lea

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class java.lang.Thread

      `Thread.State, Thread.UncaughtExceptionHandler`

  - ### Field Summary

    - ### Fields inherited from class java.lang.Thread

      `MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `ForkJoinWorkerThread(ForkJoinPool pool)` Creates a ForkJoinWorkerThread operating in the given pool.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `ForkJoinPool` | `getPool()` Returns the pool hosting this thread.
    `int` | `getPoolIndex()` Returns the index number of this thread in its pool.
    `protected void` | `onStart()` Initializes internal state after construction but before processing any tasks.
    `protected void` | `onTermination(Throwable exception)` Performs cleanup associated with termination of this worker thread.
    `void` | `run()` This method is required to be public, but should never be called explicitly.

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

      `activeCount, checkAccess, clone, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield`

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

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

- - ### Constructor Detail

    - #### ForkJoinWorkerThread

          protected ForkJoinWorkerThread(ForkJoinPool pool)

      Creates a ForkJoinWorkerThread operating in the given pool.
      Parameters:
        `pool` - the pool this thread works in
      Throws:
        `NullPointerException` - if pool is null

  - ### Method Detail

    - #### getPool

          public ForkJoinPool getPool()

      Returns the pool hosting this thread.
      Returns:
        the pool

    - #### getPoolIndex

          public int getPoolIndex()

      Returns the index number of this thread in its pool. The returned value ranges from zero to the maximum number of threads (minus one) that have ever been created in the pool. This method may be useful for applications that track status or collect results per-worker rather than per-task.
      Returns:
        the index number

    - #### onStart

          protected void onStart()

      Initializes internal state after construction but before processing any tasks. If you override this method, you must invoke `super.onStart()` at the beginning of the method. Initialization requires care: Most fields must have legal default values, to ensure that attempted accesses from other threads work correctly even before this thread starts processing tasks.

    - #### onTermination

          protected void onTermination(Throwable exception)

      Performs cleanup associated with termination of this worker thread. If you override this method, you must invoke `super.onTermination` at the end of the overridden method.
      Parameters:
        `exception` - the exception causing this thread to abort due to an unrecoverable error, or `null` if completed normally

    - #### run

          public void run()

      This method is required to be public, but should never be called explicitly. It performs the main run loop to execute `ForkJoinTask`s.
      Specified by:
        `run` in interface `Runnable`
      Overrides:
        `run` in class `Thread`
      See Also:
        `Thread.start()`, `Thread.stop()`, `#Thread(ThreadGroup, Runnable, String)`

Copyright © 2025 API Design. All Rights Reserved.