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.
cheat/concorrencia
Executar em paralelo sem corromper estado.
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.
try (var pool = Executors.newVirtualThreadPerTaskExecutor()) {
tarefas.forEach(pool::submit);
}CompletableFuture.supplyAsync(this::buscar)
.thenApply(this::formatar)
.exceptionally(e -> "falhou: " + e.getMessage());var contador = new AtomicInteger();
contador.incrementAndGet();`count++` em campo compartilhado são três operações, e a JVM pode intercalá-las.