DEV Community

FUNDAMENTOS JAVA
FUNDAMENTOS JAVA

Posted on

Streams Paralelas

Quando usar parallelStream()?

Se você precisar processar grandes quantidades de dados de forma eficiente, pode usar parallelStream() para executar as operações em múltiplas threads.

Certifique-se de que a operação realizada em paralelo seja "associativa" e "comutativa", ou seja, a ordem não deve afetar o resultado final.

Benefícios e cuidados

  • Pode acelerar processamento de grandes volumes de dados.

  • Não é recomendável para coleções pequenas.

  • Pode introduzir problemas com concorrência.

Exemplo 1: Somar números de uma lista.
List<Integer> numeros = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
int soma = numeros.parallelStream()
.reduce(0, Integer::sum);
System.out.println("Soma com parallelStream: " + soma);

Exemplo 2: Filtrando e processando elementos com Stream paralelo.
List<Integer> numbers = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// Usando Stream paralelo para filtrar os números pares e multiplicá-los por 2
List<Integer> result = numbers.parallelStream()
.filter(n -> n % 2 == 0) // Filtra os números pares
.map(n -> n * 2) // Multiplica por 2
.collect(Collectors.toList());
System.out.println("Resultado: " + result);

Exemplo3: Usando reduce com Stream paralelo
//Usando reduce em paralelo para encontrar o maior número
Optional<Integer> max = numbers.parallelStream()
.reduce(Integer::max); // Usa max para encontrar o maior valor
max.ifPresent(System.out::println); // Imprime o maior número

Exemplo 4: Paralelizando a contagem de elementos
List<String> words = List.of("apple", "banana", "cherry", "date", "elderberry");
// Contando o número de palavras com mais de 5 letras
long count = words.parallelStream()
.filter(word -> word.length() > 5)
.count();
System.out.println("Número de palavras com mais de 5 letras: " + count);

Top comments (0)