Okhttp异步请求从异步准备队列到异步执行队列

197 阅读1分钟

调用Call.enqueue(),会执行Dispatcher.enqueue(),将请求先放入readyAsyncCalls中,然后调用Dispatcher.promoteAndExecute()对readyAsyncCalls进行遍历,若runningAsyncCalls队列大小大于maxRequest值(默认大小为64)则中止遍历,否则继续执行,若一个请求的请求域名,在runningAsyncCalls中请求相同域名的请求数小于maxRequestsPreHost(默认大小为5),就把该请求从readyAsyncCalls中移到runningAsyncCalls。

调用Dispatcher.setMaxRequests()Dispatcher.setMaxRequestsPreHost()和当一个异步线程执行完都会调用Dispatcher.promoteAndExecute()