Maison > Java > javaDidacticiel > le corps du texte

Comment attendre efficacement une liste de contrats à terme et gérer les exceptions ?

Linda Hamilton
Libérer: 2024-10-26 00:48:28
original
888 Les gens l'ont consulté

How to Efficiently Wait for a List of Futures and Handle Exceptions?

Attendre efficacement une liste de futurs

Lorsqu'on traite une liste de futurs, l'objectif est d'attendre l'achèvement ou l'apparition de une exception dans tout avenir. Une approche naïve impliquant des appels individuels à f.get() peut conduire à une attente inutile si une exception se produit dès le début.

Éviter les attentes inutiles avec CompletionService

Pour résoudre ce problème problème, la classe CompletionService entre en jeu. Il permet d'exécuter des tâches asynchrones et de récupérer leurs résultats de manière thread-safe dès qu'ils deviennent disponibles. Voici comment l'utiliser :

<code class="java">Executor executor = Executors.newFixedThreadPool(4);
CompletionService<SomeResult> completionService = new ExecutorCompletionService<>(executor);

// Submit tasks to the service
for (int i = 0; i < 4; i++) {
    completionService.submit(new Callable<SomeResult>() {
        @Override
        public SomeResult call() {
            // Task logic here
            return result;
        }
    });
}

int received = 0;
boolean errors = false;

// Loop until all tasks are complete or an error occurs
while (received < 4 && !errors) {
    Future<SomeResult> resultFuture = completionService.take(); // Blocks if nothing available
    try {
        SomeResult result = resultFuture.get();
        received++;
        // Process result here
    } catch (Exception e) {
        // Log error
        errors = true;
    }
}

// Consider canceling remaining tasks if an error occurred</code>
Copier après la connexion

En utilisant l'approche CompletionService, vous pouvez surveiller l'achèvement des tâches en temps réel et interrompre le traitement ultérieur si une erreur se produit, évitant ainsi une attente inutile.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!