Pular para o conteúdo

cheat/concorrencia

Concorrência

Executar em paralelo sem corromper estado.

Consulta

Pool de threads

try (var pool = Executors.newFixedThreadPool(4)) {
  pool.submit(() -> processar(lote));
}

ExecutorService é AutoCloseable desde o Java 19 — antes disso era shutdown() na mão, e esquecer travava a JVM.

Virtual threads

try (var pool = Executors.newVirtualThreadPerTaskExecutor()) {
  tarefas.forEach(pool::submit);
}

Encadear assíncrono

CompletableFuture.supplyAsync(this::buscar)
    .thenApply(this::formatar)
    .exceptionally(e -> "falhou: " + e.getMessage());

Contador seguro

var contador = new AtomicInteger();
contador.incrementAndGet();

`count++` em campo compartilhado são três operações, e a JVM pode intercalá-las.