首页 > 编程语言 >聊聊异步编程CompletionService的使用

聊聊异步编程CompletionService的使用

时间:2022-11-25 08:44:59浏览次数:37  
标签:异步 CompletionService -- 用户 信息 获取 首页 聊聊 banner

在日常需求的研发过程中都遇到过需要调用多个服务并将他们的结果进行合并的需求。这种情形又分为多个结果相互不依赖的情况,以及多个调用的结果相互依赖。比如一个首页,需要获取用户信息、首页banner信息、推荐信息、用户资产信息等。其中获取用户信息和获取banner信息、推荐信息是相互独立的没有依赖关系,而获取用户信息和用户资产以及资产详情信息是相互依赖的,需要先获取到用户的信息,然后获取用户资产依赖于用户信息,获取资产详情又依赖于用户资产信息。

对于上面的问题,最简单普遍的处理方案为:获取用户信息-->获取用户资产-->获取资产详情-->获取首页推荐-->获取首页banner。将这些过程进行顺序调用获取到结果之后返回。但是获取用户信息和获取首页其它信息直接并没有关联关系,顺序调用的话线程一个一个顺序执行,虽然不相关但是却必须等到前面的方法执行完毕之后才能执行后面的方法。这种方式导致调用耗时就是所有调用的总和。还有一种方式就是不相关的任务并发执行,这样A线程在查询用户信息的时候B线程也不闲着去查询首页banner信息,C线程去查询推荐信息。这样就相当于多人工作,耗时也就少了,尤其对于首页这种对于用户体验影响特别大的耗时尤为重要。

可以利用异步编程工具CompletableFuture、CompleteService实现需求,利用现有的工具可以简单的就实现功能。

CompletableFuture、CompleteService都是异步编程工具。但是它们的使用场景有所不同。CompletableFuture适用于有相互依赖关系的多个任务之间的编排,而CompleteService适用于多个任务之间没有相互依赖关系的情景。

 

标签:异步,CompletionService,--,用户,信息,获取,首页,聊聊,banner
From: https://www.cnblogs.com/xfeiyun/p/16921880.html

相关文章

  • CompletableFuture异步任务编排
    业务场景:查询详情页的逻辑比较多,有些数据还需要远程调用,必然要花费更多的时间。1、获取SKU的基本信息0.5s2、获取SKU的图片信息0.5s3、获取SKU的促销信息1s4、获取SPU的......
  • 聊聊全链路压测
    https://www.cnblogs.com/imyalost/p/8439910.html主要罗列的是问题点,以及对应的一些解决方案,仅供参考。。。相关链接:阿里全链路压测有赞全链路压测京东全链路压测饿......
  • vue+element-ui异步加载树结构-前端(全)
    element-ui异步加载行政区划树功能:进入页面,左侧显示行政区划树的顶级目录,单击目录左侧的箭头,则向后端发送请求,获得该级目录的子目录;以此类推;点击目录本身,则向后端发请求和右......
  • jquery实现多个异步方法的同步调用
    js顺序执行两个异步方法需求场景:[由于某种影响,框架环境不能支持es6的promise语法]1、第一下拉框需要进行加载字典【已经封装好的方法1】异步2、加载完成字典之后才能赋值......
  • 聊聊连接池和线程
    https://www.cnblogs.com/imyalost/p/7189455.html一、连接池1、什么是连接池?我们为什么需要它?连接池允许多个客户端使用缓存起来的连接对象,这些对象可以连接数据库,它们......
  • Java之支付宝(电脑网站支付)成功后 同步回调,异步回调验证签名报错解决思路
    摘要:在做支付宝电脑网站支付的接口时候(这里仅限使用支付宝官网提供的SDK接入支付宝支付接口),支付成功了,但是支付宝回调的时候老是报签名失败,经过查看资料,发现是支付宝公钥......
  • 微信小程序异步回调函数恶梦和解决办法
    问题先看看下面的代码,是读写取腾讯cos,因为几个对象间是有层次关系的,要读出一个取值然后作为另一个的条件,再去读,依次有几层关系。按照官方文档,每一次都要放在回调函数里取......
  • 关于配置执行定时任务和异步任务的线程池配置类
    packagecom.liftsail.rsademo.utils;importlombok.extern.slf4j.Slf4j;importorg.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;importorg.springf......
  • 企业级mysql数据库集群实战—— MySQL主从复制之异步复制(传统复制Postion与Gtid)
    企业级mysql数据库集群实战(2)——MySQL主从复制之异步复制(传统复制Postion与Gtid)目录一. 主从复制简介   1、概念   2、原理   3、优点二......
  • 聊聊Spring中的数据绑定DataBinder
    数据绑定 这个概念在任何一个成型的框架中都是特别重要的(尤其是web框架),它能让框架更多的自动化,更好容错性以及更高的编码效率。它提供的能力是:把字符串形式的参数转换成服......