OkHttp的maxRequests/maxRequestsPerHost是否适用于同步请求?
OkHttp的maxRequests/maxRequestsPerHost对同步请求的适用性
核心结论
maxRequests(全局最大并发请求数)和maxRequestsPerHost(单主机最大并发请求数)配置完全适用于同步/阻塞式请求,二者由OkHttp的Dispatcher组件统一管控,同步、异步请求都会受到这两个并发限制的约束。
具体说明
当调用Call.execute()发起同步请求时,Dispatcher会先校验当前全局并发数和目标主机的并发数是否已达上限:
- 若未达上限,请求直接在当前线程执行;
- 若已达上限,当前线程会被阻塞,直到有其他请求完成、释放出对应的并发名额后,才会继续执行当前同步请求。
参考文档核心内容翻译
Dispatcher负责将请求分配到线程中执行,它实现了对并发请求的限制策略:
maxRequests:控制全局范围内同时执行的最大请求数量;maxRequestsPerHost:控制针对同一主机同时执行的最大请求数量。
这些限制适用于所有通过Dispatcher调度的请求,无论请求是同步提交还是异步提交。
内容的提问来源于stack exchange,提问作者Bennett Lynch
相关产品推荐
相关产品推荐

