Here\'s my understanding of the Stream framework of Java 8:
For what it's worth, Java 8 in Action has a chapter on Parallel data processing and performance (Chapter 7). It says:
"...the Stream interface gives you the opportunity to execute operations in parallel on a collection of data without much effort."
"...you’ll see how Java can make this magic happen or, more practically, how parallel streams work under the hood by employing the fork/join framework introduced in Java 7."
It also has a small side note in section 7.1:
"Parallel streams internally use the default ForkJoinPool...which by default has as many threads as you have processors, as returned by
Runtime.getRuntime().availableProcessors().""you can change the size of this pool using the system property java.util .concurrent.ForkJoinPool.common.parallelism, as in the following example:"
System.setProperty("java.util.concurrent.ForkJoinPool.common.parallelism","12");
As mentioned in the comments and other answers, this does not mean it will always use the fork/join.