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.
Interface Summary Interface Description ForkJoinPool.ForkJoinWorkerThreadFactoryFactory for creating new
ForkJoinPool.ManagedBlockerInterface for extending managed parallelism for tasks running in
BlockingQueuein which producers may wait for consumers to receive elements.
Class Summary Class Description ForkJoinPoolAn
ForkJoinTask<V>Abstract base class for tasks that run within a
ForkJoinWorkerThread LinkedTransferQueue<E>An unbounded
TransferQueuebased on linked nodes.
RecursiveActionA recursive resultless
RecursiveTask<V>A recursive result-bearing
ThreadLocalRandomA random number generator isolated to the current thread.