Keep in mind that you are developing interface specifications - not against implementation. Implementation may change with the next version of Java, while the specification should remain stable.
There are no differences between serial and parallel streams in the specification. For this reason, you should assume that combiner can be used. There are actually good examples showing that combinators for serial threads can improve performance. For example, the following shrink operation combines a list of strings. Executing code without a combiner has quadratic complexity. Reasonable execution with a combiner can reduce the execution time in magnitude.
List<String> tokens = ...; String result = tokens.stream().reduce("", String::concat, String::concat);
nosid Jun 13 '14 at 14:12 2014-06-13 14:12
source share