1
resposta

[Dúvida] Aguardar a conclusão de todas as Virtual Threads.

Como faço para saber se todas as virutal threads foram concluídas para que eu possa fazer um processamento final?

O código que tenho é este:

    private void gerarXmls(final int lotes) {
        System.out.println("Gerando os XMLs....");
        try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
            for (int lote = 0; lote < lotes; lote++) {
                final var command = ExportaAcordaoCommand.with(lote, Integer.parseInt(quantidadePorLote));
                final var acordaoThread = new ExportaAcordaoRunnable(acordaoPath, exportaAcordaoUseCase, command);
                executor.execute(acordaoThread);
            }
        }
    }
    //Antes de seguir, preciso saber se todas as threads foram concluídas.
1 resposta

Oii, Bruno! Tudo bem?

Como sugestão, você pode utilizar o método shutdown() seguido de awaitTermination() ou o método join. Reunir alguns links contendo as documentações que abordam com mais profundidade sobre os métodos e suas aplicações. Dessa forma, você pode realizar as modificações que precisa de acordo com as necessidades do seu código.

Espero que as sugestões te ajude. Continue se dedicando aos estudos e qualquer dúvida, conte conosco.

Bons estudos, Bruno!