Streams Intermedio

Usa gli executor con thread virtuali per concorrenza leggera illimitata.

✕ 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();
}
Vedi un problema con questo codice? Faccelo sapere.
♾️

Nessun dimensionamento

Nessuna dimensione del pool da ottimizzare — crea tutti i thread necessari.

Leggero

I thread virtuali usano KB di memoria, non MB.

🧹

Auto-chiudibile

Il try-with-resources gestisce automaticamente lo shutdown.

Approccio Vecchio
Pool di thread fisso
Approccio Moderno
Executor con thread virtuali
Dal JDK
21
Difficoltà
Intermedio
Executor con thread virtuali
Disponibile

Ampiamente disponibile dal JDK 21 LTS (settembre 2023)

L'executor con thread virtuali crea un nuovo thread virtuale per ogni task. Nessun dimensionamento del pool necessario — i thread virtuali sono abbastanza economici da crearne milioni.

Condividi 𝕏 🦋 in