试过了 parallelStream 和多个 CompletableFuture 的 join ,发现性能差别不是很大。大神们还有啥好的实践方法麽?
![]() |
1
cxshun 257 天前
ParallelStream 实际上底层也是维护自己的 ForkjoinPool ,如果你说的多个,多到超过 CPU 核数,那可能定义自己的 ForkjoinPool 去提交 ParallelStream 会更合适点。
如果觉得 ParallelStream 那种 WorkSteal 的方式对你不大适用,那直接使用多线程就行了。 PS:性能差别本来这两种就是类似的。但如果你发现并行和串行差别不大,那就要考虑是不是业务提供方性能不行。 |
![]() |
2
newskillsget 257 天前
自己维护个线程池,异步并发去请求多个接口。用 parallelStream 和 CompletableFuture 貌似都是全局的池子
|
3
tairan2006 257 天前
CompletableFuture 可以注入自定义的线程池
|
![]() |
4
admol 257 天前
CompletableFuture 可以指定自定义的线程池
|
![]() |
5
luxinfl OP |
![]() |
6
luxinfl OP @cxshun 现在采用的就是多个 CF 的写法,然后一起 join ,等待所有接口调用完毕才走到下一步。提供方的接口性能确实也不好。我也怀疑是不是网络时延太高,h 都是 http 调用
|
8
chengyulong 257 天前
提供方接口如果性能不好 就是搞再多的异步也不好使,考虑换对接方式吧
|
![]() |
9
sagaxu 257 天前 via Android
看看总耗时比最耗时的接口长多少,接口耗时是没办法的
|
![]() |
10
ixx 257 天前
差别不大可能是请求处理时间本身就很快
|
11
golangLover 257 天前 via Android
你以前好像已经问过了吧
|
![]() |
12
luxinfl OP |
![]() |
13
luxinfl OP @golangLover 发过类似的,仅仅是使用方法
|
![]() |
15
yidinghe 257 天前 via Android
问楼主个不相干的问题,为什么要把“如何”打成“如果”?这是拼音容易打错还是五笔容易打错?
|
![]() |
16
OkabeRintaro 257 天前
@yidinghe 语音输入吧
|
![]() |
19
ainimuyan 256 天前
|