


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>
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

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 !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds

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.

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.

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.

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

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.

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.

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

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.
