Maison Java javaDidacticiel Comment utiliser CompecuableFuture pour garantir l'ordre des demandes d'interface par lots et traiter efficacement les résultats?

Comment utiliser CompecuableFuture pour garantir l'ordre des demandes d'interface par lots et traiter efficacement les résultats?

Apr 19, 2025 pm 09:09 PM
ai 并发访问

Comment utiliser CompecuableFuture pour garantir l'ordre des demandes d'interface par lots et traiter efficacement les résultats?

Java Programmation simultanée: Utilisez la transition complets pour gérer efficacement et ordonner les demandes d'interface par lots

Un accès élevé simultané aux interfaces tierces peut améliorer considérablement l'efficacité de traitement des données, mais si l'ordre d'exécution du thread n'est pas contrôlé, le résultat final peut ne pas correspondre à l'ordre des données d'origine, ce qui entraîne des erreurs de traitement ultérieures. Cet article présente comment utiliser la transition de Java pour garantir le traitement ordonné des demandes d'interface et les résultats dans un environnement multi-thread.

Problème: Utilisez CompletableFuture.runAsync directement pour passer des appels asynchrones. En raison de l'ordre imprévisible de l'exécution du thread, le résultat retourné est incompatible avec l'ordre de la liste de données d'origine. CompletableFuture.allOf ne peut garantir que l'achèvement de toutes les tâches, et la commande ne peut être garantie.

Solution: Utilisez CompletableFuture.supplyAsync , qui renvoie le résultat. Stockez le résultat de retour de chaque tâche asynchrone dans CompletableFuture<string></string> Dans la liste, une fois toutes les tâches terminées, les résultats sont collectés dans l'ordre d'origine via stream().map(CompletableFuture::join).collect(Collectors.toList()) .

Exemple de code amélioré:

 public static void main (String [] args) {
    Liste<string> datalist = new ArrayList  (); // Liste de données d'origine // ... Initialiser le datalist ...

    ExecutorService ExecutorService = new ThreadPoolExecutor (
            10, // CorepoolSize
            20, // maximumpoolSize
            60L, // keepalivetime
            Timeunit.seconds,
            Nouveau LinkedBlockingQueue  (1024), // workQueue
            new ThreadpoolExecutor.CallerRunspolicy () // Handler
    ));

    Liste <completablefuture> > Futures = new ArrayList  ();
    for (String data: datalist) {
        Futures.add (CompletableFuture.SupplyAsync (() -> {
            logger.info ("Traitement des données: {}", données);
            // appelle l'interface tiers pour traiter les données
            // ... Logique de traitement des appels et des résultats d'interface ...
            Retour des données "- Résultat traité"; // return Processing Result}, exécutorService));
    }

    ComplecableFuture.Allof (Futures.toArray (Nouveau EXCHETABLEFUTURE [0])). ThenRun (() -> {{
        Liste<string> résultats = futures.stream ()
                .map (CompletableFuture :: join)
                .Collect (collectionners.tolist ());
        Logger.info ("Toutes les tâches terminées. Résultats: {}", json.tojSontring (résultats));
        // Résultats de traitement ultérieurs}). Thenrun (() -> ExecutorService.shutdown ());
}</string></completablefuture></string>
Copier après la connexion

Le code amélioré utilise CompletableFuture.supplyAsync pour renvoyer les résultats de chaque appel d'interface et est stocké dans la liste futures . CompletableFuture.allOf garantit que les résultats sont traités une fois toutes les tâches terminées. stream().map(CompletableFuture::join).collect(Collectors.toList()) garantit que les résultats sont collectés dans l'ordre d'origine, résolvant ainsi le problème de la concurrence dans l'ordre des résultats. Le code utilise également un pool de thread personnalisé pour mieux contrôler l'utilisation des ressources.

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Top 10 des dernières versions des plateformes de trading de devises virtuelles pour les transactions en vrac Top 10 des dernières versions des plateformes de trading de devises virtuelles pour les transactions en vrac Apr 22, 2025 am 08:18 AM

Les facteurs suivants doivent être pris en compte lors du choix d'une plate-forme de trading en vrac: 1. Liquidité: la priorité est donnée aux plateformes avec un volume de trading quotidien moyen de plus de 5 milliards de dollars américains. 2. Conformité: Vérifiez si la plate-forme détient des licences telles que FinCEN aux États-Unis, Mica dans l'Union européenne. 3. Sécurité: Ratio de stockage du portefeuille à froid et mécanisme d'assurance sont des indicateurs clés. 4. Capacité de service: s'il faut fournir des gestionnaires de compte exclusifs et des outils de transaction personnalisés.

Résumé des dix premiers portails de téléchargement de la version Apple pour les applications d'échange de devises numériques Résumé des dix premiers portails de téléchargement de la version Apple pour les applications d'échange de devises numériques Apr 22, 2025 am 09:27 AM

Fournit une variété d'outils de trading complexes et d'analyse du marché. Il couvre plus de 100 pays, a un volume de trading dérivé quotidien moyen de plus de 30 milliards de dollars, prend en charge plus de 300 paires de trading et 200 fois un effet de levier, a une forte force technique, une énorme base d'utilisateurs mondiaux, fournit des plateformes de trading professionnelles, des solutions de stockage sécurisées et des paires de trading riches.

Quelles sont les dix principales applications de trading de devises virtuelles? Recommandé sur les dix premières plateformes de change de monnaie numérique Quelles sont les dix principales applications de trading de devises virtuelles? Recommandé sur les dix premières plateformes de change de monnaie numérique Apr 22, 2025 pm 01:12 PM

Les dix premiers échanges de devises numériques sécurisés en 2025 sont: 1. Binance, 2. Okx, 3. Gate.io, 4. Coinbase, 5. Kraken, 6. Huobi, 7. Bitfinex, 8. Kucoin, 9. Bybit, 10. Bitstamp. Ces plateformes adoptent des mesures de sécurité à plusieurs niveaux, y compris la séparation des portefeuilles chauds et froids, la technologie multi-signature et un système de surveillance 24/7 pour assurer la sécurité des fonds utilisateur.

Quelles sont les stablecoins? Comment échanger des stablecoins? Quelles sont les stablecoins? Comment échanger des stablecoins? Apr 22, 2025 am 10:12 AM

Les stablecoins communs sont: 1. L'exploitation, émise par Tether, fixée au dollar américain, largement utilisée mais la transparence a été remise en question; 2. Dollar américain, émis par Circle et Coinbase, avec une grande transparence et favorisé par les institutions; 3. Dai, publié par Makerdao, décentralisé et populaire dans le champ Defi; 4. Binance Dollar (BUSD), coopéré par Binance et Paxos, a d'excellentes performances de négociation et de paiement; 5. Trusto

Combien d'échanges de stablecoin y a-t-il maintenant? Combien de types de stablescoins y a-t-il? Combien d'échanges de stablecoin y a-t-il maintenant? Combien de types de stablescoins y a-t-il? Apr 22, 2025 am 10:09 AM

En 2025, le nombre d'échanges de stablecoin est d'environ 1 000. 1. Les pièces stables soutenues par les monnaies fiduciaires comprennent l'USDT, l'USDC, etc. 3. Algorithme Stablecoins tels que Terrausd. 4. Il existe également des stablescoins hybrides.

Laquelle des dix principales transactions dans le cercle des devises? Les dernières recommandations d'applications de cercle de devises Laquelle des dix principales transactions dans le cercle des devises? Les dernières recommandations d'applications de cercle de devises Apr 24, 2025 am 11:57 AM

Choisir un échange fiable est crucial. Les dix premiers échanges tels que Binance, Okx et Gate.io ont leurs propres caractéristiques. De nouvelles applications telles que Coingecko et Crypto.com valent également la peine de faire attention.

Quelles sont les prochaines mille pièces de monnaie en 2025? Quelles sont les prochaines mille pièces de monnaie en 2025? Apr 24, 2025 pm 01:45 PM

En avril 2025, sept projets de crypto-monnaie sont considérés comme ayant un potentiel de croissance significatif: 1. Filecoin (FIL) atteint un développement rapide grâce à des réseaux de stockage distribués; 2. APTOS (APT) attire les développeurs DAPP avec des chaînes publiques de couche 1 haute performance; 3. Polygone (Matic) améliore les performances du réseau Ethereum; 4. ChainLink (Link) sert de réseau Oracle décentralisé pour répondre aux besoins de contrat intelligents; 5. Avalanche (Avax) se négocie rapidement et

Qu'est-ce que la monnaie DLC? Quelle est la perspective de la monnaie DLC Qu'est-ce que la monnaie DLC? Quelle est la perspective de la monnaie DLC Apr 24, 2025 pm 12:03 PM

Les pièces DLC sont des crypto-monnaies basées sur la blockchain qui visent à fournir une plate-forme de trading efficace et sécurisée, prennent en charge les contrats intelligents et les technologies transversales, et conviennent aux champs financiers et de paiement.

See all articles