2

Retrofit2を使用しています。複数の OkHttp3 クライアントを作成して、最初のインスタンスの接続プールを他のクライアントと共有できますか? それはスレッドセーフで良い習慣ですか?

4

1 に答える 1

7

各クライアントをインスタンス化し、メソッドConnectionPoolを使用OkHttpClient.Builderしてすべての新しいクライアント インスタンスを渡しますconnectionPool(ConnectionPool connectionPool)

ConnectionPool接続を再利用するためにのみ使用され、スレッドセーフです。ただし、OkHttp の readme からのこのスニペットを考慮する必要があります。

グローバル シングルトン接続プールはなくなりました。OkHttp 2.x では、すべての OkHttpClient インスタンスがデフォルトで共通の接続プールを共有していました。OkHttp 3.x では、新しい OkHttpClient ごとに独自のプライベート接続プールが取得されます。接続の再利用が妨げられるため、アプリケーションは多くの接続プールを作成しないようにする必要があります。各接続プールは独自の接続セットを保持するため、多くのプールを持つアプリケーションもメモリを使い果たす危険があります!

于 2016-01-14T15:12:14.640 に答える