Re: .parallelStream()
On 4/1/2015 10:08 AM, Stefan Ram wrote:
I read somewhere that streams can be executed in parallel.
Somewhere else I read, that one needs to call
?.parallelStream()? for parallel execution.
So, do I get it right, that the JVM will never execute a
stream obtained by ?.stream()? in parallel, even if it can
detect that this will be faster and yield the same outcome,
unless the programmer has explicitly enabled this via
?.parallelStream()??
Quoth the Javadoc for Collection (emphasis mine):
default Stream<E> stream()
Returns a *sequential* Stream with this collection as its
source.
However, the sequential or parallel state of a Stream at the time
of creation need not be the final word; for some Streams it may be
possible to change the mode (before use, obviously). The Javadoc
for BaseStream says (emphasis again mine):
S parallel()
Returns an equivalent stream that is parallel. May return
itself, either because the stream was already parallel, or
because the underlying stream state was *modified* to be
parallel.
That is, it is possible that a Stream obtained from stream(), although
initially sequential, could become parallel later on.
--
esosman@comcast-dot-net.invalid
"Don't be afraid of work. Make work afraid of you." -- TLM