The Fork/Join framework is a specialized executor designed for recursive divide-and-conquer work. When a task is too big to do at once, you split it into smaller subtasks, hand each subtask to a worker thread, and join the results back together. This lesson covers the ForkJoinPool, the work-stealing algorithm it uses to balance load across workers, the two task base classes (RecursiveTask and RecursiveAction), the fork/compute/join pattern, how to pick a threshold for splitting, the common pool shared with parallel streams and CompletableFuture, and the question of when Fork/Join fits versus a plain ExecutorService.
The previous chapter on CyclicBarrier showed how a fixed pool of threads can coordinate at synchronization points. Fork/Join is a different shape: the threads aren't symmetric workers waiting at a barrier, they're recursive workers that constantly split tasks and steal from each other when their own queue runs empty.