创建几个具有相同连接池的OkHttp3客户端



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

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

ConnectionPool仅用于重用连接,并且是线程安全的。然而,您应该考虑OkHttp:的自述文件中的这个片段

不再有全局单例连接池。在OkHttp2.x中,默认情况下,所有OkHttpClient实例共享一个公共连接池。在OkHttp3.x中,每个新的OkHttpClient都有自己的私有连接水塘应用程序应避免创建许多连接池这样做可以防止连接重用。每个连接池都有自己的一组活动的连接,因此具有许多池的应用程序冒着耗尽记忆的风险!

最新更新