httpurlconnection がハングしている理由がわかりません。
次の設定があります: URL に接続し、応答コードが 200 かどうかを確認し、1 秒間スリープしない場合は httpurlconnection.disconnect() を呼び出してから再試行し、6 秒経過したら試行を停止して戻ります。200 応答コードがある場合は(if String (i =readLine())!=null
、読み取りタイムアウトを 8 秒に設定して、バッファ付きリーダーで入力ストリームを読み取ってみてください。
これはすべてスレッドを使用して行われ、ハングする場合とハングしない場合があるため、Callable
andexecutorservice
でテストしたため、30 秒後に入力ストリームが返されなくなった後に終了できました。しかしtimeoutexception
、executor サービスから , がある場合、a を閉じるための finally ブロックはbufferedreader
実行されず、何かがまだハングします。無限ループはなく、200 応答を取得するための 8 秒の読み取りタイムアウトと 6 秒の制限を考えると、コードhttpurlconnection
は 14 ~ 15 秒を超えることはありませんが、多くの場合はそうです。
に設定された変数が への呼び出しでストリームを正しく終了しない場合はありhttpurlconnection
ますか? ?disconnect()?
urlconnection
setReadTimeout