1

我在带有 httpClient 的应用程序中使用异步线程。我像这样使用 Future Api 拨打电话

mStrResults = (String) rssFuture.get();

此调用尝试检索从我的 Callable httpClient call() 方法返回的 html 字符串。

然而,我想要做的是确保 get 方法在执行 call() 方法时不会等待太久。我应该在调用 rssFuture.get() 时传递一个超时参数,还是只用一个 InterruptedException 捕获块包围就可以了?

还有一个异步线程在抛出 InterruptedException 之前等待的默认时间,如果是,我可以设置自定义值吗?

4

2 回答 2

3

你应该使用未来。get(long timeout, TimeUnit unit),并捕获 TimeoutException。get() 没有默认超时,它将永远等待。

除非调用 Future.get() 的线程被中断,否则不会抛出 InterruptedException。

于 2008-12-09T15:07:18.280 回答
3

rssFuture.get()您应该在调用并捕获 TimeoutException时传递一个超时参数。call仅当运行您的线程被该方法中断Thread.interrupt或您cancel(true)在 Future obj 中调用该方法时,才会发生 InterruptedException 。

于 2008-12-09T15:12:12.843 回答