2011-08-15 23 views
0

私は自分のアプリケーションでJava HttpURLConnectionでデータ転送のタイムアウトを設定できますか?

URLConnection urlConn = theURL.openConnection(); 

// set connect timeout. 
urlConn.setConnectTimeout(5000); 

// set read timeout. 
urlConn.setReadTimeout(5000); 

を使用しています。接続時間の1つのタイムアウト。読み取りが開始されるまでの時間。実際のデータ転送プロセスをタイムアウトする簡単な方法はありますか?

非常に遅いホストからデータを読み取っているスレッドがあるか、データソースが非常に大きいので、転送時間が長すぎます。どうすればその時間を制限できますか?

+0

参照http://stackoverflow.com/q/2733356/ – Saul

+0

ありがとう。しかし、私はThreadPoolへの全体的なタイムアウトの設定はここでは選択できないと考えています。 x分後に実行中のすべてのスレッドをキャンセルしたくない。私は単一のスレッドの実行時間を制限したいと思います。私が知っている限り、interrupt()はIOブロックスレッドでは常に動作しません。 – Olga

答えて

-1

私が理解する限り、docsはこれをサポートしていると思います。readTimeoutは、InputStreamの読み込みが開始されてから開始します。これにより、長い転送がタイムアウトします。

編集:ドキュメントは言う:接続は、これはそれも可能性がないリソース

に確立されたとき、入力ストリーム からの読み取り時

非ゼロ値は、タイムアウトを指定します書かれていますが、実際にこれが転送時間に関係しているかのように私に聞こえます。

+0

dv'er - コメントしてくださいね? –

+0

タイムアウトは、データの読み取りを開始するためのものではありません。 Webサーバーはデータを送信する前にいくつかの前処理を行いたいかもしれません - >このタイムアウトはあなたをそれから守ります。 – ExtremeCoder

+0

データの転送時に読み取りタイムアウトが開始されません。読み取りタイムアウトは、2つのデータパケットが利用可能になるまでの時間です。これは、ネットワーク接続が失われた場合に起こります。 –

関連する問題