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.
publicclassProcessamento implements Serializable{privatestatic final long serialVersionUID =1L;private final Integer parallelism =6;privateForkJoinPool forkJoinPool = null;publicvoid inicio(LocalDate data) throws InterruptedException{List<Arquivo> lista =newArrayList<Arquivo>(consultaArquivo(Integer id));try{if(!lista.isEmpty()){
forkJoinPool =newForkJoinPool(parallelism);
forkJoinPool.submit(()->
lista.parallelStream().forEach(i -> processa(i))).get();}}catch(InterruptedException|ExecutionException e){
log.error(e.getMessage());} finally {if(forkJoinPool != null){
forkJoinPool.shutdown();}}}publicvoid processa (Arquivo arquivo){// calculos ...ArquivoDao dao =newArquivoDao.incluir(arquivo)}}
Pergunta
Thiago Carvalho
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.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.