ForkJoinWorkerThread

A thread managed by a {@link ForkJoinPool}, which executes {@link 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 {@link ForkJoinPool.ForkJoinWorkerThreadFactory} to {@linkplain ForkJoinPool#ForkJoinPool(int, ForkJoinWorkerThreadFactory, UncaughtExceptionHandler, bool, int, int, int, Predicate, long, TimeUnit) use it} in a {@code ForkJoinPool}.

@author Doug Lea

Constructors

this
this(ForkJoinPool pool)

Creates a ForkJoinWorkerThread operating in the given pool.

this
this(ForkJoinPool pool, ThreadGroupEx threadGroup)

Version for InnocuousForkJoinWorkerThread.

Members

Functions

afterTopLevelExec
void afterTopLevelExec()

Non-hook method for InnocuousForkJoinWorkerThread.

awaitJoin
int awaitJoin(IForkJoinTask task)
Undocumented in source. Be warned that the author may not have intended to support it.
getPool
ForkJoinPool getPool()

Returns the pool hosting this thread.

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

onStart
void onStart()

Initializes internal state after construction but before processing any tasks. If you override this method, you must invoke {@code 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
void onTermination(Throwable exception)

Performs cleanup associated with termination of this worker thread. If you override this method, you must invoke {@code super.onTermination} at the end of the overridden method.

run
void run()

This method is required to be public, but should never be called explicitly. It performs the main run loop to execute {@link ForkJoinTask}s.

Static functions

pollSubmission
IForkJoinTask pollSubmission()

If the current thread is operating in a ForkJoinPool, unschedules and returns, without executing, a task externally submitted to the pool, if one is available. Availability may be transient, so a {@code null} result does not necessarily imply quiescence of the pool. This method is designed primarily to support extensions, and is unlikely to be useful otherwise.

Variables

pool
ForkJoinPool pool;
Undocumented in source.
workQueue
WorkQueue workQueue;
Undocumented in source.

Meta