¿Debo usar siempre un flujo paralelo cuando sea posible?

Con Java 8 y las lambdas, es fácil iterar sobre colecciones como secuencias, y es igual de fácil usar una secuencia paralela. Dos ejemplos delos docs, el segundo utilizando parallelStream:

myShapesCollection.stream()
    .filter(e -> e.getColor() == Color.RED)
    .forEach(e -> System.out.println(e.getName()));

myShapesCollection.parallelStream() // <-- This one uses parallel
    .filter(e -> e.getColor() == Color.RED)
    .forEach(e -> System.out.println(e.getName()));

Mientras no me importe el pedido, ¿siempre sería beneficioso utilizar el paralelo? Uno podría pensar que es más rápido dividir el trabajo en más núcleos.

¿Hay otras consideraciones? ¿Cuándo debería usarse la transmisión paralela y cuándo debería usarse la transmisión no paralela?

(Se plantea esta pregunta para iniciar una discusión sobre cómo y cuándo usar flujos paralelos, no porque creo que usarlos siempre es una buena idea).

Respuestas a la pregunta(4)

Su respuesta a la pregunta