Apache-httpclient-multiple-threads
Apache HttpClient-複数のスレッド
マルチスレッドプログラムには、同時に実行できる2つ以上の部分が含まれており、各部分は同時に使用可能なリソースを最適に使用して異なるタスクを処理できます。
マルチスレッドHttpClientプログラムを記述することにより、複数のスレッドからリクエストを実行できます。
スレッドから複数のクライアントリクエストを連続して実行する場合は、 ClientConnectionPoolManager を作成する必要があります。 HttpClientConnections のプールを維持し、スレッドからの複数のリクエストを処理します。
接続マネージャーは、ルートに基づいて接続をプールします。 マネージャに特定のルートへの接続がある場合、マネージャは、新しい接続を作成する代わりに、プールから既存の接続をリースすることにより、それらのルートで新しいリクエストを処理します。
手順に従って、複数のスレッドからリクエストを実行します-
手順1-クライアント接続プールマネージャーの作成
ステップ2-接続の最大数を設定する
- setMaxTotal()*メソッドを使用して、プール内の接続の最大数を設定します。
ステップ3-ClientBuilderオブジェクトを作成する
以下に示すように、* setConnectionManager()メソッドを使用して接続マネージャーを設定することにより、 *ClientBuilder オブジェクトを作成します-
ステップ4-HttpGet要求オブジェクトを作成する
目的のURIをコンストラクターにパラメーターとして渡すことにより、HttpGetクラスをインスタンス化します。
ステップ5-runメソッドの実装
クラスを作成し、スレッド(スレッドクラスを拡張するか、Runnableインターフェイスを実装することで)にし、runメソッドを実装したことを確認してください。
ステップ6-スレッドオブジェクトの作成
上記で作成したThreadクラス(ClientMultiThreaded)をインスタンス化して、スレッドオブジェクトを作成します。
HttpClientオブジェクト、それぞれのHttpGetオブジェクト、およびIDを表す整数をこれらのスレッドに渡します。
ステップ7-スレッドを開始して参加する
- start()*メソッドを使用してすべてのスレッドを開始し、join * method()*を使用してそれらを結合します。
ステップ8-メソッド実装の実行
runメソッド内で、リクエストを実行し、レスポンスを取得して結果を出力します。
例
次の例は、複数のスレッドからのHTTP要求の同時実行を示しています。 この例では、さまざまなスレッドからさまざまな要求を実行し、各クライアントが読み取ったステータスとバイト数を出力しようとしています。
出力
実行すると、上記のプログラムは次の出力を生成します-