Streams Intermédiaire

Utilisez des executors de threads virtuels pour une concurrence légère illimitée.

✕ 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();
}
Un problème avec ce code ? Dites-le nous.
♾️

Sans dimensionnement

Sans taille de pool à ajuster — créez autant de threads que nécessaire.

Léger

Les threads virtuels utilisent des Ko de mémoire, pas des Mo.

🧹

Auto-closeable

try-with-resources gère la fermeture automatiquement.

Ancienne Approche
Pool de threads fixe
Approche Moderne
Executor de threads virtuels
Depuis JDK
21
Difficulté
Intermédiaire
Executor avec threads virtuels
Disponible

Disponible depuis JDK 21 LTS (sept. 2023)

L'executor de threads virtuels crée un nouveau thread virtuel pour chaque tâche. Pas besoin de dimensionner le pool — les threads virtuels sont suffisamment économiques pour en créer des millions.

Partager 𝕏 🦋 in