|
| 1 | +:java-package: src/org/j6toj8/streams |
| 2 | +:section-java-package: ../../../{java-package} |
| 3 | + |
| 4 | +=== Streams Paralelos |
| 5 | + |
| 6 | +.Objetivo |
| 7 | +-------------------------------------------------- |
| 8 | +Develop code that uses parallel streams, including decomposition operation and reduction operation in streams |
| 9 | +- |
| 10 | +Desenvolver código que usa Streams Paralelos, incluindo operação de decomposição e operação de redução em Streams |
| 11 | +-------------------------------------------------- |
| 12 | + |
| 13 | +Streams podem ser sequenciais ou paralelos. Os sequencias foram vistos na seção anterior, enquanto os paralelos serão apresentados nesta seção. Streams paralelos são executados por mais de uma Thread, geralmente uma quantidade igual à quantidade de núcleos do processador onde a aplicação está sendo executada. Apesar disso, nem sempre é útil utilizá-los. Seu ganho real é em Streams com grande volumes de dados. Em um Stream pequeno, transformá-lo em paralelo pode até causar uma perda de performance. |
| 14 | + |
| 15 | +Ao utilizar qualquer tipo de Stream, é recomendável não executar funções lambdas que causem efeitos colaterais, como mudanças no estado de objetos. Em Streams paralelos essa recomendação é ainda mais forte. |
| 16 | + |
| 17 | +. Chamando .parallel em Streams |
| 18 | +. Chamando .parallelStream em Coleções |
| 19 | +. Exemplo de .forEach com e sem paralelo, imprimindo em diferentes |
| 20 | +. Exemplo de .forEachOrdered em streams paralelos, que mantém ordem |
| 21 | +. Exemplo de ganho de performance |
| 22 | +. Evitar expressões lambda que alteram o estado de um objeto. Exemplo de forEachOrdered e um map com operação stateful. |
| 23 | +. Exemplo de findAny com resultados imprevisíveis |
| 24 | +. Utilização de unordered para ganhar performance em findFirst, limit, skip |
| 25 | +. Reduce com acumuladores associativos (multiplicação) |
| 26 | +. Reduce com acumuladores não-associativos (subtração) |
| 27 | +. Exemplo com toConcurrentMap |
| 28 | +. Exemplo com groupByConcurrent |
| 29 | + |
| 30 | +.Referências |
| 31 | +**** |
| 32 | +
|
| 33 | +* Working with Parallel Streams |
| 34 | ++ |
| 35 | +Boyarsky, Jeanne; Selikoff, Scott. OCP: Oracle Certified Professional Java SE 8 Programmer II Study Guide (p. 366). Wiley. Edição do Kindle. |
| 36 | +
|
| 37 | +* https://www.baeldung.com/java-8-streams[The Java 8 Stream API Tutorial.] |
| 38 | +
|
| 39 | +* https://docs.oracle.com/javase/tutorial/collections/streams/parallelism.html[Parallelism.] The Java™ Tutorials. |
| 40 | +
|
| 41 | +* https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html[Package java.util.stream.] Java Plataform SE 8. |
| 42 | +
|
| 43 | +* https://docs.oracle.com/javase/8/docs/api/?java/util/stream/Stream.html[Interface Stream<T>.] Java Plataform SE 8. |
| 44 | +
|
| 45 | +**** |
0 commit comments