Skip to content

Objetivo: Desenvolver fluxos paralelos

java-releases/streams-paralelos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Tópico: Stream Paralelos

Objetivos

  • Desenvolver código que use stream paralelo;
  • Implementar decomposição e redução com stream;

Resumo

  • Ao criar um stream paralelo a partir de outro stream, e aplicar um terminal operation, isso torna o stream original indisponível para o uso. Caso tente utilizar o stream original, então irá gerar uma java.lang.IllegalStateException: stream has already been operated upon or closed;
  • Para criar um stream paralelo, podemos chamar o método parallel(), a partir de uma instância de Stream, ou chamar o método parallelStream() a partir de alguma instância de alguma Collection.
  • O método findFirst(), garante que o 1º elemento do Stream será chamado, mesmo sendo serial ou paralelo.

Decomposição

  • É o processo de pegar uma tarefa, dividi-la em partes menores que podem ser executadas simultaneamente, e em seguida, remontar os resultados.
  • Quando usamos um .forEachOrdered(), isso força que a iteração seja ordenada conforme o input de dados inicial.

Redução

  • Os resultados de redução paralela, podem ser diferentes dos resultados com redução serial stream.
  • Para performar um reduction com collector:
    • O stream deve ser em paralelo;
    • O parâmetro da operação de collect() deve ter um Characteristics.CONCURRENT;
    • O Stream não deverá ser ordenado, ou colector deverá ter características unordered;

Performance com ordenação

  • Qualquer operação que é baseada na ordem, incluindo: findFirst(), limit(), ou skip(), podem performar mais lentamente em stream paralelo.

About

Objetivo: Desenvolver fluxos paralelos

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages