Streams Intermediário

Use executors de virtual threads para concorrência leve e ilimitada.

✕ 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.
♾️

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
Executor com virtual threads
Disponível

Amplamente disponível desde o JDK 21 LTS (setembro de 2023)

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.

Compartilhar 𝕏 🦋 in