如何利用CompletableFuture保证批量接口请求结果的顺序一致性?

如何利用completablefuture保证批量接口请求结果的顺序一致性?

高效并发处理批量接口请求:确保结果顺序一致

高效率地处理大量数据时,并发调用多个第三方接口能显著提升效率。然而,简单的多线程并发可能导致返回结果顺序错乱,与原始数据列表对应不上。本文将介绍如何利用Java的CompletableFuture解决这个问题,确保接口调用结果与原始数据顺序完全一致。

问题:

假设需要并发调用1000多个第三方接口并处理返回结果。如果使用简单的for循环启动多个线程,接口调用的顺序无法保证,最终结果的顺序与原始数据列表不符。某些示例代码使用CompletableFuture.runAsync执行异步任务,但忽略了结果的收集和顺序的维护。

解决方案:

为了保证结果顺序与原始数据列表一致,关键在于使用CompletableFuture.supplyAsync代替CompletableFuture.runAsync。supplyAsync方法可以返回一个结果,而runAsync没有返回值。通过supplyAsync返回每个接口调用的结果,再利用流式处理将结果收集到列表中,即可确保结果顺序与原始数据列表一致。

改进后的代码:

public static void main(String[] args) {    List dataList = new ArrayList(); // 原始数据列表    // ... 初始化 dataList ...    ExecutorService executorService = new ThreadPoolExecutor(            //核心线程数            Runtime.getRuntime().availableProcessors(),            //最大线程数            Runtime.getRuntime().availableProcessors() * 2,            //线程存活时间            60L, TimeUnit.SECONDS,            new LinkedBlockingQueue(),            new ThreadPoolExecutor.CallerRunsPolicy());    List<CompletableFuture> futures = new ArrayList();    for (String data : dataList) {        futures.add(CompletableFuture.supplyAsync(() -> {            logger.info("开始执行异步线程->>" + data);            // 调用接口,传入 data            // 根据接口返回值判断 data 是否匹配            // 返回处理后的结果            return processData(data); // 处理数据并返回结果        }, executorService)); // 使用自定义线程池    }    // 所有请求完成后处理逻辑    CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).thenRun(() -> {        List results = futures.stream()                .map(CompletableFuture::join)                .collect(Collectors.toList());        logger.info("线程执行完毕:{}", JSON.toJSONString(results));        // 调用发送短信    }).thenRun(() -> executorService.shutdown());}// 处理数据的方法,根据实际情况修改private static String processData(String data) {    // ...  接口调用和数据处理逻辑 ...    return data + "处理后的结果";}

登录后复制

通过将每个CompletableFuture的结果存储在futures列表中,并在最后使用futures.stream().map(CompletableFuture::join).collect(Collectors.toList())收集结果,就保证了结果顺序与原始数据列表一致。CompletableFuture::join方法会阻塞直到获取到CompletableFuture的结果。 这样就有效解决了原代码中结果顺序错乱的问题。

以上就是如何利用CompletableFuture保证批量接口请求结果的顺序一致性?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3246450.html

(0)
上一篇 2025年4月2日 14:14:24
下一篇 2025年4月2日 14:14:32

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 值得推荐的软件开发技术方案

    在数字化时代,软件开发成为现代社会的关键组成部分。选择合适的技术方案对于项目成功至关重要。本文将介绍一些推荐的软件开发技术方案,帮助您在开发过程中取得卓越的成果。 1. 前端开发技术方案 React.js: React是一个流行的JavaS…

    2025年4月28日
    000
  • android开发框架怎么搭建?

    在移动应用开发领域,android平台的应用开发框架起着关键作用。一个稳定、高效的开发框架可以大大提升开发效率和代码质量,让开发者更加专注于业务逻辑的实现。本文将为您详细介绍如何搭建一个基础的android开发框架,助您顺利开始构建您的an…

    2025年4月28日
    000
  • 通讯APP开发都有哪些应用场景呢?

    随着移动互联网的迅猛发展,通讯app已成为人们日常生活和工作中不可或缺的工具。这些app不仅提供即时沟通的便利,还在多个领域中发挥着重要作用。以下是通讯app开发可能涵盖的一些应用场景: 即时消息应用: 这是最常见的通讯APP类型,用户可以…

    2025年4月28日
    000
  • 校园APP开发:做一个校园APP多少钱?有哪些功能及推广方案

    数字化和智能化的教育发展已经超出大多数人的预期。如今,中小学生的编程培训已成常态,广东省甚至将通过【创想鸟】平台制作手机app纳入中学生课程内容之一。 开发一款校园APP不仅能丰富学生的校园生活,让他们随时随地获取学校重大新闻和活动信息,还…

    2025年4月28日 IT业界
    000
  • 服装搭配APP开发:开发一个服装行业APP多少钱?

    永远缺少一件适合的衣服?试衣间里不停的换来换去却找不到自己的满意的一款?不如试试服装、穿衣搭配app,通过手机跨速发现适合自己的种类,让穿衣变得更好玩、有趣。 现在,不需要编程开发,在PHP中文网,已经有现成整套的原生服装行业APP开发模板…

    2025年4月28日 IT业界
    000
  • 鲜花APP开发:免编程,鲜花APP模板直接套用,含预定、配送等功能

    高质量的生活怎么能少了鲜花?每周为自己买上一束鲜花,不失为一种美好生活的追求,活出自己的一种态度!为亲人朋友订一束花,表达自己情感,是恒古不变的方法。 随着人们生活水平的提高,鲜花已经成为都市白领的刚需,而且越来越多的婚庆活动都离不开鲜花的…

    2025年4月28日 IT业界
    000
  • 同城配送APP:同城订蛋糕送鲜花APP开发,有现成软件直接用

    近很多人都在咨询:app怎么制作,想搞一个同城配送,如鲜花蛋糕等? 随着手机的发展,很多人都没有意识到,移动互联网发展对商业的变革要远远大于传统的互联网。比如现在送外的只有于外卖?显然不是这样的,未来,同城生活的所有实体店都可以通过配送实现…

    2025年4月28日 IT业界
    000
  • 自己如何做自媒体APP?阅读类APP开发具备哪些功能?

    各大新闻网站纷纷推出自媒体平台,许多自媒体人借此机会,迅速崛起成为业界翘楚,如罗辑思维、咪蒙等,他们的单片广告费用就高达数十万。 随着各大平台逐渐成熟,流量增长放缓,阅读量下降,建立粉丝矩阵成为新的选择。喜欢轻阅读的粉丝可以选择关注公众号,…

    2025年4月28日
    000
  • 房地产APP开发价格?省去房地产APP定制公司90%费用,自己也可能制作

    房地产面临的客群主要是本地居民,传统的推广渠道主要以户外广告为主,而随着各个城市对户外的清理,户外广告位的费用也惊人增值,北上广深某些区域的价格就接近万元。 如何联系到客户成为房地产各环节的人都在思考的问题,无论是一手房、二手房,还是房地产…

    2025年4月28日 IT业界
    000
  • 瑜伽APP开发:应用公园现成瑜伽健身类APP模板直接套用

    瑜伽作为健身产业难得的蓝海细分领域,行业的综合复合增长率为58.3%,2016年中国的瑜伽人口超到6000万,而潜在人群高达1.2亿,市场前景极好。 而且因为瑜伽行业的目标人群非常精准,就是城市高端时尚女性白领,这个人群的消费能力非常高,商…

    2025年4月28日 IT业界
    000

发表回复

登录后才能评论