Retrofit2を使用しています。複数の OkHttp3 クライアントを作成して、最初のインスタンスの接続プールを他のクライアントと共有できますか? それはスレッドセーフで良い習慣ですか?
質問する
2567 次
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 に答える