Maison > Java > javaDidacticiel > Les flux parallèles Java 8 peuvent-ils utiliser un pool de threads personnalisé ?

Les flux parallèles Java 8 peuvent-ils utiliser un pool de threads personnalisé ?

Susan Sarandon
Libérer: 2024-12-28 14:11:28
original
970 Les gens l'ont consulté

Can Java 8 Parallel Streams Utilize a Custom Thread Pool?

Pool de threads personnalisé pour les flux parallèles Java 8

Le flux parallèle de Java 8 offre un moyen pratique de paralléliser les opérations et d'améliorer les performances. Cependant, dans certains scénarios, il peut être souhaitable d'utiliser un pool de threads personnalisé pour contrôler l'allocation des threads et compartimenter différentes tâches au sein d'une application.

Les flux parallèles peuvent-ils utiliser un pool de threads personnalisé ?

Au départ, il n'existait aucun moyen explicite d'attribuer un pool de threads personnalisé à un flux parallèle. Cela pourrait poser des problèmes lorsqu'il s'agit d'applications comportant plusieurs modules et la nécessité d'empêcher des tâches lentes de bloquer d'autres.

L'astuce Fork-Join Pool

Cependant, il existe une solution de contournement à l'aide de l'API Fork-Join Pool. En soumettant une tâche parallèle dans un pool de jointure fork distinct, il est possible de l'isoler du pool commun utilisé par les opérations de flux. Voici un exemple :

final int parallelism = 4;
ForkJoinPool forkJoinPool = null;
try {
    forkJoinPool = new ForkJoinPool(parallelism);
    final List<Integer> primes = forkJoinPool.submit(() -> {
        // Parallel task here, for example
        IntStream.range(1, 1_000_000).parallel()
                .filter(PrimesPrint::isPrime)
                .boxed().collect(Collectors.toList())
    }).get();
    System.out.println(primes);
} catch (InterruptedException | ExecutionException e) {
    throw new RuntimeException(e);
} finally {
    if (forkJoinPool != null) {
        forkJoinPool.shutdown();
    }
}
Copier après la connexion

Ce code crée un pool de jointure fork dédié avec un parallélisme spécifié et lui soumet l'exécution de tâches parallèles. Cela permet aux tâches spécifiées de fonctionner au sein de leur propre pool de threads, les séparant du pool commun.

Conclusion

La solution de contournement utilisant un pool de jointure fork fournit un moyen pour utiliser un pool de threads personnalisé pour les flux parallèles dans Java 8. Il permet un contrôle plus fin sur l'allocation et la compartimentation des threads, permettant l'exécution parallèle de tâches sans blocage entre modules.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal