Executor con thread virtuali
Usa gli executor con thread virtuali per concorrenza leggera illimitata.
Confronto Codice
✕ 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.
Perché vince l'approccio moderno
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
Supporto JDK
Executor con thread virtuali
Disponibile
Ampiamente disponibile dal JDK 21 LTS (settembre 2023)
Come funziona
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.
Documentazione Correlata