日々精進

新しく学んだことを書き留めていきます

org.apache.http.impl.client.DefaultHttpClientを使って通信している時にInterruptedIOExceptionが発生する

原因は以下。

  • ScheduledExecutorServiceを使ってポーリングしてて、ポーリングを一度止める場合にScheduledExecutorService#shutdownNowを実行していた。
  • shutdownNowを実行するとThread.interrupted()がtrueになる
  • HttpClientのコードの中にループをぐるぐる回してHTTPレスポンスを待つコードがあるがそのループの中にThread.interrupted()がtrueの場合InterruptedIOExceptionを投げる処理がある

HTTPリクエストをキャンセルし、いらなくなったスレッドからInterruptedIOExceptionが出ているだけなのでこれは無視してOK。