Future.get()とInterruptedExceptionある非同期スレッド
-
20-08-2019 - |
質問
イム。私はそうのような未来のAPIを使用して電話をかける
mStrResults = (String) rssFuture.get();
HTML文字列を取得するには、このコールの試みは私のコーラブルHttpClientを呼び出し()メソッドから返されます。
私は何がやりたいことの呼び出し()メソッドを実行しながら、getメソッドが長すぎる待機しないことを確実にあります。 rssFuture.getを呼び出したとき、私は(タイムアウトパラメータを渡す必要があります)、またはそれだけでInterruptedExceptionあるのcatchブロックで囲むokです?
また、非同期スレッドが例外:InterruptedExceptionを投げる前に待機となり、デフォルトの時間がありますので、私は、カスタム値を設定することができますか?
解決
あなたはrssFuture.get()
を呼び出すとき、タイムアウトパラメータを渡すと、TimeoutExceptionをキャッチする必要があります。スレッドがあなたのcall
Thread.interrupt
方法か、今後のOBJでcancel(true)
メソッドを呼び出した場合に中断されます。
他のヒント
あなたは将来を使用する必要があります。<のhref = "http://java.sun.com/javase/6/docs/api/java/util/concurrent/Future.html#get(long,%20java.util。 concurrent.TimeUnit)」のrel = "nofollowをnoreferrer">(長いタイムアウト、TimeUnitでユニット)に、とキャッチTimeoutExceptionを取得します。 GET()、それが待機するためのデフォルトのタイムアウトはありません。の永遠の
Future.get()を呼び出すスレッドが中断されない限り、InterruptedExceptionあるがスローされることはありません。