如何使用Retrofit/OkHttp更快地创建并发请求?

Kaa*_*rde 6 java android http retrofit okhttp3

我需要在Android中使用Retrofit尽可能快地发出50个http GET请求.我正在使用OkHttp进行Retrofit.目前改造正在做的不好VS普通的Java ThreadPoolExecutor和HttpUrlConnection:约50秒的改造和30秒为纯HttpUrlConnection对所有50个请求,如果我设置了池大小20 ThreadPoolExecutor和用于改造/ OkHttp我设置okHttpClient.dispatcher().setMaxRequests(20);.

如果我查看logcat,我可以看到Retrofit最多会执行5个并发请求,无论我设置什么,setMaxRequests()而且ThreadPoolExecutor有可用工作线程的并发请求数量.

有什么办法可以让Retrofit变得更快吗?我不想切换到,HttpUrlConnection因为Retrofit非常优雅且易于使用.

编辑1

我尝试向ThreadPoolExecutorOkHttp 提供自定义,但没有时间改进:

OkHttpClient.Builder builder = new OkHttpClient.Builder();
ExecutorService exec = new ThreadPoolExecutor(20, 20, 1, TimeUnit.HOURS, new LinkedBlockingQueue<>());
Dispatcher d = new Dispatcher(exec);
builder.dispatcher(d);
OkHttpClient okHttpClient = builder.build();
okHttpClient.dispatcher().setMaxRequests(20);
Run Code Online (Sandbox Code Playgroud)

编辑2

如果这很重要,我会向同一个端点发出所有请求

Vee*_*ner 9

既然他们都去了同一个主人,你试过:

okHttpClient.dispatcher().setMaxRequestsPerHost(20);
Run Code Online (Sandbox Code Playgroud)

Dispatcher.setMaxRequestsPerHost