title: Should I always use a parallel stream when possible?
body: <p>With Java 8 and lambdas it's easy to iterate over collections as streams, and just as easy to use a parallel stream. Two examples from <a href="http://docs.oracle.com/javase/tutorial/collections/interfaces/collection.html">the docs</a>, the second one using parallelStream:</p>
  
  <pre><code>myShapesCollection.stream()
      .filter(e -&gt; e.getColor() == Color.RED)
      .forEach(e -&gt; System.out.println(e.getName()));
  
  myShapesCollection.parallelStream() // &lt;-- This one uses parallel
      .filter(e -&gt; e.getColor() == Color.RED)
      .forEach(e -&gt; System.out.println(e.getName()));
  </code></pre>
  
  <p>As long as I don't care about the order, would it always be beneficial to use the parallel? One would think it is faster dividing the work on more cores.</p>
  
  <p>Are there other considerations? When should parallel stream be used and when should the non-parallel be used?</p>
  
  <p><sup>(This question is asked to trigger a discussion about how and when to use parallel streams, not because I think always using them is a good idea.)</sup></p>