Ir para conteúdo
Fórum Script Brasil
  • 0

Multithreaded parallel stream


Thiago Carvalho

Pergunta

Olá pessoal, estou com um problema ao utilizar processamento paralelo com parallel stream.

Ao final dos cálculos, quando chega a parte de inserir os dados no BD,  alguns inserts dão erro de chave primaria duplicada, mas quando executo somente com uma thread esse erro não ocorre.

Segue um exemplo do código.

public class Processamento implements Serializable {
	
	private static final long serialVersionUID = 1L;
	
	private final Integer parallelism = 6;
	private ForkJoinPool forkJoinPool = null;

	public void inicio(LocalDate data) throws InterruptedException {
		
		List<Arquivo> lista = new ArrayList<Arquivo>(consultaArquivo(Integer id));
			
		try {
			if (!lista.isEmpty()) {
				forkJoinPool = new ForkJoinPool(parallelism);
				forkJoinPool.submit(() ->

				lista.parallelStream().forEach(i -> processa(i))).get();
			}

		} catch (InterruptedException | ExecutionException e) {
			log.error(e.getMessage());
		} finally {
			if (forkJoinPool != null) {
				forkJoinPool.shutdown();
			}
		}
	}
	
	public void processa (Arquivo arquivo){
		
		// calculos ...
		
		ArquivoDao dao = new ArquivoDao.incluir(arquivo)
	}

}

 

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...