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

mStrResults = (String) rssFuture.get();

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

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

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

有帮助吗?

解决方案

调用rssFuture.get()时,应通过一个超时参数和捕捉TimeoutException异常。一个InterruptedException只会如果运行的call线程获取与Thread.interrupt方法中断或如果你调用在未来obj中的cancel(true)方法发生。

其他提示

你应该使用未来。get(长超时, TimeUnit 单位), ,并捕获 TimeoutException。get()没有默认超时,它会等待 永远.

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top