Executor com virtual threads
Use executors de virtual threads para concorrência leve e ilimitada.
Comparação de Código
✕ Java 8
ExecutorService exec =
Executors.newFixedThreadPool(10);
try {
futures = tasks.stream()
.map(t -> exec.submit(t))
.toList();
} finally {
exec.shutdown();
}
✓ Java 21+
try (var exec = Executors
.newVirtualThreadPerTaskExecutor()) {
var futures = tasks.stream()
.map(exec::submit)
.toList();
}
Viu um problema com este código? Nos avise.
Por que a forma moderna ganha
Sem dimensionamento
Sem tamanho de pool para ajustar — crie quantas threads precisar.
Leve
Virtual threads usam KB de memória, não MB.
Auto-closeable
try-with-resources gerencia o encerramento automaticamente.
Abordagem Antiga
Pool fixo de threads
Abordagem Moderna
Virtual Thread Executor
Desde o JDK
21
Dificuldade
Intermediário
Suporte JDK
Executor com virtual threads
Disponível
Amplamente disponível desde o JDK 21 LTS (setembro de 2023)
Como funciona
O executor de virtual threads cria uma nova virtual thread para cada tarefa. Sem necessidade de dimensionar o pool — virtual threads são baratas o suficiente para criar milhões delas.
Documentação Relacionada