File tree 1 file changed +10
-4
lines changed
1 file changed +10
-4
lines changed Original file line number Diff line number Diff line change 5
5
- Java并发
6
6
---
7
7
8
- 一个接口可能需要调用 N 个其他服务的接口,这在项目开发中还是挺常见的 。举个例子:用户请求获取订单信息,可能需要调用用户信息 、商品详情、物流信息、商品推荐等接口,最后再汇总数据统一返回 。
8
+ 实际项目中,一个接口可能需要同时获取多种不同的数据,然后再汇总返回,这种场景还是挺常见的 。举个例子:用户请求获取订单信息,可能需要同时获取用户信息 、商品详情、物流信息、商品推荐等数据 。
9
9
10
- 如果是串行(按顺序依次执行每个任务)执行的话,接口的响应速度会非常慢。考虑到这些接口之间有大部分都是 ** 无前后顺序关联** 的,可以 ** 并行执行** ,就比如说调用获取商品详情的时候,可以同时调用获取物流信息。通过并行执行多个任务的方式,接口的响应速度会得到大幅优化。
10
+ 如果是串行(按顺序依次执行每个任务)执行的话,接口的响应速度会非常慢。考虑到这些任务之间有大部分都是 ** 无前后顺序关联** 的,可以 ** 并行执行** ,就比如说调用获取商品详情的时候,可以同时调用获取物流信息。通过并行执行多个任务的方式,接口的响应速度会得到大幅优化。
11
11
12
- ![ serial-to-parallel ] ( https://oss.javaguide.cn/github/javaguide/high-performance/serial-to-parallel.png )
12
+ ![ ] ( https://oss.javaguide.cn/github/javaguide/high-performance/serial-to-parallel.png )
13
13
14
- 对于存在前后顺序关系的接口调用,可以进行编排,如下图所示 。
14
+ 对于存在前后调用顺序关系的任务,可以进行任务编排 。
15
15
16
16
![ ] ( https://oss.javaguide.cn/github/javaguide/high-performance/serial-to-parallel2.png )
17
17
18
18
1 . 获取用户信息之后,才能调用商品详情和物流信息接口。
19
19
2 . 成功获取商品详情和物流信息之后,才能调用商品推荐接口。
20
20
21
+ 可能会用到多线程异步任务编排的场景(这里只是举例,数据不一定是一次返回,可能会对接口进行拆分):
22
+
23
+ 1 . 首页:例如技术社区的首页可能需要同时获取文章推荐列表、广告栏、文章排行榜、热门话题等信息。
24
+ 2 . 详情页:例如技术社区的文章详情页可能需要同时获取作者信息、文章详情、文章评论等信息。
25
+ 3 . 统计模块:例如技术社区的后台统计模块可能需要同时获取粉丝数汇总、文章数据(阅读量、评论量、收藏量)汇总等信息。
26
+
21
27
对于 Java 程序来说,Java 8 才被引入的 ` CompletableFuture ` 可以帮助我们来做多个任务的编排,功能非常强大。
22
28
23
29
这篇文章是 ` CompletableFuture ` 的简单入门,带大家看看 ` CompletableFuture ` 常用的 API。
You can’t perform that action at this time.
0 commit comments