私のhttpurlconnectionが掛かっている理由を理解できないようです。java.net、hanging in java
私は次の設定をしています:接続URL、応答コードが200であるかどうかをチェックし、1秒間スリープしない場合はhttpurlconnection.disconnect()を呼び出してから6秒後に再試行してください。 200レスポンスコードの場合は、(if String (i =readLine())!=null
を使用して、bufferedreaderで入力ストリームを読み込み、読み取りタイムアウトを8秒に設定します。
これはスレッドを使用して実行され、時にはハングしたり、実行されない場合があるため、Callable
とexecutorservice
でテストしたので、30秒後に入力ストリームを返さないと終了できます。しかし、実行者サービスからtimeoutexception
がある場合、bufferedreader
を閉じるためのfinallyブロックは実行されず、何かがまだハングします。無限ループはなく、コードはhttpurlconnection
の8秒の読み取りタイムアウトと200応答の取得に6秒の制限が14〜15秒を超えることはありませんが、しばしばそうです。
のでhttpurlconnection
に変数セットは、正しくもdisconnect()?
への呼び出しでストリームを終了しませんいずれにせよ、urlconnection
のsetReadTimeout
方法状態のjavadocがあります:「この方法のいくつかの非標準の実装は無視します指定されたタイムアウト "とは何ですか?
聖書のバットマンの壁。これは少し書いてみて、最も重要なのはあなたのコードを表示してみてください。 –
多くの単語が1つの段落にあります! –
あなたは理解していませんか? – EJP