使用相同的连接池创建多个OkHttp3客户端

时间:2016-01-12 18:44:54

标签: android retrofit2 okhttp3

我正在使用Retrofit2。 我可以创建几个OkHttp3客户端并从第一个实例与其他客户端共享连接池吗?它是线程安全和良好的做法吗?

1 个答案:

答案 0 :(得分:4)

实例化您的ConnectionPool并使用每个客户端的OkHttpClient.Builder并使用connectionPool(ConnectionPool connectionPool)方法传递所有新客户端实例。

ConnectionPool仅用于重用连接,它是线程安全的。但是你应该从OkHttp的自述文件中考虑这个片段:

  

不再有全局单例连接池。在OkHttp 2.x中,   默认情况下,所有OkHttpClient实例共享一个公共连接池。   在OkHttp 3.x中,每个新的OkHttpClient都有自己的私有连接   池。应用程序应避免创建许多连接池   这样做会阻止连接重用。每个连接池都有自己的连接   一组连接存活,所以具有许多池的应用程序也是如此   冒着精疲力竭的记忆!