# ForkJoinWorkerThread

public class **ForkJoinWorkerThread** extends Thread  
A thread managed by a `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/ForkJoinPool.html`, which executes
`https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/ForkJoinTask.html`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 `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/ForkJoinPool.ForkJoinWorkerThreadFactory.html` to
{@linkplain ForkJoinPool#ForkJoinPool use it} in a `ForkJoinPool`.

### Inherited Constant Summary

From class java.lang.Thread

|---|---|---|
| int | MAX_PRIORITY |   |
| int | MIN_PRIORITY |   |
| int | NORM_PRIORITY |   |

### Protected Constructor Summary

|---|---|
|   | [ForkJoinWorkerThread](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/ForkJoinWorkerThread.html#ForkJoinWorkerThread(java.util.concurrent.ForkJoinPool))([ForkJoinPool](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/ForkJoinPool.html) pool) Creates a ForkJoinWorkerThread operating in the given pool. |

### Public Method Summary

|---|---|
| [ForkJoinPool](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/ForkJoinPool.html) | [getPool](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/ForkJoinWorkerThread.html#getPool())() Returns the pool hosting this thread. |
| int | [getPoolIndex](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/ForkJoinWorkerThread.html#getPoolIndex())() Returns the unique index number of this thread in its pool. |
| void | [run](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/ForkJoinWorkerThread.html#run())() This method is required to be public, but should never be called explicitly. |

### Protected Method Summary

|---|---|
| void | [onStart](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/ForkJoinWorkerThread.html#onStart())() Initializes internal state after construction but before processing any tasks. |
| void | [onTermination](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/ForkJoinWorkerThread.html#onTermination(java.lang.Throwable))([Throwable](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Throwable.html) exception) Performs cleanup associated with termination of this worker thread. |

### Inherited Method Summary

From class java.lang.Thread

|---|---|
| static int | activeCount() |
| final void | checkAccess() |
| [Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html) | clone() Creates and returns a copy of this `Object`. |
| int | countStackFrames() |
| static Thread | currentThread() |
| void | destroy() |
| static void | dumpStack() |
| static int | enumerate(Thread\[\] arg0) |
| static [Map](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Map.html)\<Thread, StackTraceElement\[\]\> | getAllStackTraces() |
| [ClassLoader](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/ClassLoader.html) | getContextClassLoader() |
| static Thread.UncaughtExceptionHandler | getDefaultUncaughtExceptionHandler() |
| long | getId() |
| final [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | getName() |
| final int | getPriority() |
| StackTraceElement\[\] | getStackTrace() |
| Thread.State | getState() |
| final [ThreadGroup](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/ThreadGroup.html) | getThreadGroup() |
| Thread.UncaughtExceptionHandler | getUncaughtExceptionHandler() |
| long | googleGetContext0() |
| void | googleSetContext0(long arg0) |
| static boolean | holdsLock([Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html) arg0) |
| void | interrupt() |
| static boolean | interrupted() |
| final boolean | isAlive() |
| final boolean | isDaemon() |
| boolean | isInterrupted() |
| final void | join() |
| synchronized final void | join(long arg0) |
| synchronized final void | join(long arg0, int arg1) |
| final void | resume() |
| void | run() When an object implementing interface `Runnable` is used to create a thread, starting the thread causes the object's `run` method to be called in that separately executing thread. |
| void | setContextClassLoader([ClassLoader](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/ClassLoader.html) arg0) |
| final void | setDaemon(boolean arg0) |
| static void | setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler arg0) |
| synchronized final void | setName([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) arg0) |
| final void | setPriority(int arg0) |
| void | setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler arg0) |
| static void | sleep(long arg0, int arg1) |
| static void | sleep(long arg0) |
| synchronized void | start() |
| final void | stop() |
| synchronized final void | stop([Throwable](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Throwable.html) arg0) |
| final void | suspend() |
| [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | toString() Returns a string containing a concise, human-readable description of this object. |
| static void | yield() |

From class [java.lang.Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html)

|---|---|
| [Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html) | [clone](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#clone())() Creates and returns a copy of this `Object`. |
| boolean | [equals](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#equals(java.lang.Object))([Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html) obj) Compares this instance with the specified object and indicates if they are equal. |
| void | [finalize](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#finalize())() Invoked when the garbage collector has detected that this instance is no longer reachable. |
| final [Class](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Class.html)\<?\> | [getClass](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#getClass())() Returns the unique instance of `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Class.html` that represents this object's class. |
| int | [hashCode](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#hashCode())() Returns an integer hash code for this object. |
| final void | [notify](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#notify())() Causes a thread which is waiting on this object's monitor (by means of calling one of the `wait()` methods) to be woken up. |
| final void | [notifyAll](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#notifyAll())() Causes all threads which are waiting on this object's monitor (by means of calling one of the `wait()` methods) to be woken up. |
| [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | [toString](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#toString())() Returns a string containing a concise, human-readable description of this object. |
| final void | [wait](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait(long,%20int))(long timeout, int nanos) Causes the calling thread to wait until another thread calls the `notify()` or `notifyAll()` method of this object or until the specified timeout expires. |
| final void | [wait](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait(long))(long timeout) Causes the calling thread to wait until another thread calls the `notify()` or `notifyAll()` method of this object or until the specified timeout expires. |
| final void | [wait](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait())() Causes the calling thread to wait until another thread calls the `notify()` or `notifyAll()` method of this object. |

From interface [java.lang.Runnable](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Runnable.html)

|---|---|
| abstract void | [run](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Runnable.html#run())() When an object implementing interface `Runnable` is used to create a thread, starting the thread causes the object's `run` method to be called in that separately executing thread. |

## Protected Constructors

#### protected
**ForkJoinWorkerThread**
([ForkJoinPool](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/ForkJoinPool.html) pool)

Creates a ForkJoinWorkerThread operating in the given pool.

##### Parameters

| pool | the pool this thread works in |
|---|---|

##### Throws

| [NullPointerException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/NullPointerException.html) | if pool is null |
|---|---|

## Public Methods

#### public [ForkJoinPool](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/ForkJoinPool.html)
**getPool**
()

Returns the pool hosting this thread.

##### Returns

- the pool

#### public int
**getPoolIndex**
()

Returns the unique index number of this thread in its pool.
The returned value ranges from zero to the maximum number of
threads (minus one) that may exist in the pool, and does not
change during the lifetime of the thread. This method may be
useful for applications that track status or collect results
per-worker-thread rather than per-task.

##### Returns

- the index number

#### public void
**run**
()

This method is required to be public, but should never be
called explicitly. It performs the main run loop to execute
`https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/ForkJoinTask.html`s.

## Protected Methods

#### 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.

#### protected void
**onTermination**
([Throwable](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Throwable.html) 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 |
|---|---|