. mapToInt ( i -> i )
. sum ();
Under the hood, parallel streams back onto the fork/join framework. The fork stage recurs-
ively splits up a problem. Then each chunk is operated upon in parallel. Finally, the join
stage merges the results back together.
Figure 6-2. Decomposing and merging using fork/join
Let's assume that the streams framework is splitting up our work to operate in parallel on a
1. Our data source is decomposed into four chunks of elements.
volves mapping each Integer to an int and also summing a quarter of the values in
each thread. Ideally, we want to spend as much of our time as possible in leaf compu-
tation work because it's the perfect case for parallelism.
3. We merge the results. In Example 6-6 this is just a sum operation, but it might involve
any kind of reduce , collect , or terminal operation.