Interface | Description |
---|---|
ForkJoinPool.ForkJoinWorkerThreadFactory |
Factory for creating new
ForkJoinWorkerThread s. |
ForkJoinPool.ManagedBlocker |
Interface for extending managed parallelism for tasks running
in
ForkJoinPool s. |
TransferQueue<E> |
A
BlockingQueue in which producers may wait for consumers
to receive elements. |
Class | Description |
---|---|
ForkJoinPool |
An
ExecutorService for running ForkJoinTask s. |
ForkJoinTask<V> |
Abstract base class for tasks that run within a
ForkJoinPool . |
ForkJoinWorkerThread |
A thread managed by a
ForkJoinPool , which executes
ForkJoinTask s. |
LinkedTransferQueue<E> |
An unbounded
TransferQueue based on linked nodes. |
Phaser |
A reusable synchronization barrier, similar in functionality to
CyclicBarrier and
CountDownLatch
but supporting more flexible usage. |
RecursiveAction |
A recursive resultless
ForkJoinTask . |
RecursiveTask<V> |
A recursive result-bearing
ForkJoinTask . |
ThreadLocalRandom |
A random number generator isolated to the current thread.
|
Candidates for fork/join processing mainly include those that can be expressed using parallel divide-and-conquer techniques: To solve a problem, break it in two (or more) parts, and then solve those parts in parallel, continuing on in this way until the problem is too small to be broken up, so is solved directly. The underlying work-stealing framework makes subtasks available to other threads (normally one per CPU), that help complete the tasks. In general, the most efficient ForkJoinTasks are those that directly implement this algorithmic design pattern.