This document summarizes a Java framework called FJTask that supports fork/join parallel programming. The key points are:
- FJTask implements a work-stealing scheduler like Cilk, with worker threads maintaining task queues and stealing tasks from each other.
- Tasks are lightweight objects that subclass FJTask rather than Thread, avoiding thread overhead. Worker threads execute tasks from their queues.
- The task queues use double-ended queues (deques) for efficient push/pop and a stealing protocol where idle threads take tasks from random others.
- An example Fibonacci program shows how to write fork/join programs using this framework, achieving much better parallel speedups than standard threading.