Since roughly 2004, multicore processors have become commonplace on commodity machines such as desktops, laptops and even mobile devices. To use such platforms to their full potential, programmers must turn to parallelism. This has caused parallel programming to outgrow its original niche of High Performance Computing (HPC). Today, parallel programming is no longer the territory of a handful of experts. As a testament to this, libraries and frameworks for parallel programming are now commonplace, even on so-called “managed runtimes”, such as the JVM and the CLR.
In general, writing parallel software remains notoriously difficult . However, for certain classes of applications, good abstractions exist. One such class is that of recursive divide-and-conquer algorithms, which can be parallelized using Fork/Join.
While the efficiency of scheduling Fork/Join tasks with work stealing has been investigated from a theoretical as well as from a practical perspective no one has yet studied how the Fork/Join model is actually used in practice. We developed a corpus of 120 open source Java projects to study the use of the Java Fork/Join framework.