2017-08-22 16 views
0

現在、私は、データを収集し、同じ宛先アドレスのの異なるAPIエンドポイントでそれらを送信するJavaでモジュールを設計しています。スレッドを使用して並行して送信されています。複数のHttpURLConnectionセンドを並行して使用する際の問題?

同じ宛先IPアドレスに送信されているため、HttpURLConnectionを使用して情報を送信するときに問題が発生しますか。私は、それぞれの送信が新しいHttpURLConnectionオブジェクトを使用していても、同じベースポート/ソケットを使用するかもしれないと考えています。

最終的に1つずつ送信されるのでしょうか?接続に問題がある場合(タイムアウトなど)、1つずつ送信された場合、各接続のタイムアウトが加算されますか? the docsで述べたように

答えて

1

:それはあなたが使用しているJVMに依存してもよいことを意味

Each HttpURLConnection instance is used to make a single request but the 
underlying network connection to the HTTP server may be transparently 
shared by other instances. 

。彼らが一つずつ送られることになるかもしれないようです。

0

接続を再利用するかどうかの問題は、接続プールとHttpURLConnectionクラス自体の実装の問題です。それはJVMとは関係ありません。

HttpURLConnectionから何も知られていないものを保持している場合は、すべてがソケット(エンドポイント)とソケットをターゲットとする接続に変換されます。エンドポイントごとに複数の接続を持つことができます。あなたの質問に対する答えは、接続がプールされていない限り、1つずつ送信されないということです。

このトピックでは、ソケットと接続の概念について詳細に説明しています。私はそれを読むことをお勧めします。 HttpURLConnectionののに関してプール

What is the difference between a port and a socket?

接続はしかし可能であり、ここで詳細に説明:Java HttpURLConnection and pooling

+0

あなたは上記の 'bezet'の答えを見てすることはできますか?それは私が言及したことです、私は彼らがすべて同じ基本的な接続を使用していることに慎重です。 –

+0

@ stoneman_41私は、接続の再利用がJVMと関係がないとは思わない。接続が再利用される場合、基盤となるJVMではなくHttpURLConnection自体の実装の問題です。接続プーリングを使用すると、接続の共有が発生することがあります。やはりJVMとは関係ありません。私はまだ私の答えの後ろに立っています。 –

関連する問題