我正在使用Retrofit2。我可以创建几个OkHttp3客户端并与其他客户端共享来自第一个实例的连接池吗?线程安全和良好的实践吗?
发布于 2016-01-14 15:12:14
实例化您的ConnectionPool并使用每个客户端的OkHttpClient.Builder,并使用connectionPool(ConnectionPool connectionPool)方法传递所有新的客户端实例。
ConnectionPool只用于重用连接,并且它是线程安全的。但是,您应该考虑OkHttp的自述文件中的这个片段:
不再存在全局单例连接池。在OkHttp 2.x中,默认情况下,所有OkHttpClient实例都共享一个公共连接池。在OkHttp 3.x中,每个新的OkHttpClient都有自己的专用连接池。应用程序应该避免创建许多连接池,因为这样做可以防止连接重用。每个连接池都拥有自己的一组活动连接,因此拥有许多池的应用程序也有耗尽内存的风险!
https://stackoverflow.com/questions/34751474
复制相似问题