1

アプリケーションでhttpClientを使用して非同期スレッドを使用しています。このようにFutureApiを使用して電話をかけます

mStrResults = (String) rssFuture.get();

この呼び出しは、Callable httpClient call()メソッドから返されたhtml文字列を取得しようとします。

ただし、私がやりたいのは、call()メソッドの実行中にgetメソッドが長時間待機しないようにすることです。rssFuture.get()を呼び出すときにタイムアウトパラメータを渡す必要がありますか、それともInterruptedExceptionキャッチブロックで囲んでも大丈夫ですか?

また、非同期スレッドがInterruptedExceptionをスローする前に待機するデフォルトの時間はありますか?その場合、カスタム値を設定できますか?

4

2 に答える 2

3

呼び出し時にタイムアウト パラメータを渡しrssFuture.get()、TimeoutException をキャッチする必要があります。InterruptedException は、メソッドを実行しているスレッドがメソッドcallで中断された場合、またはFuture obj でメソッドThread.interruptを呼び出した場合にのみ発生します。cancel(true)

于 2008-12-09T15:12:12.843 に答える
3

Future を使用する必要があります。get(long timeout, TimeUnit unit)、および catch TimeoutException. get() にはデフォルトのタイムアウトはなく、永遠に待機します。

Future.get() を呼び出すスレッドが中断されない限り、InterruptedException はスローされません。

于 2008-12-09T15:07:18.280 に答える