我在我的应用程序中使用异步线程与httpClient。我使用Future Api打电话
mStrResults = (String) rssFuture.get();
此调用尝试检索从Callable httpClient call()方法返回的html字符串。
我想要做的是确保get方法在执行call()方法时不会等待太长时间。我应该在调用rssFuture.get()时传递超时参数,还是可以用InterruptedException catch块进行环绕?
还有一个默认时间,异步线程在抛出InterruptedException之前会等待,如果可以,我可以设置自定义值吗?
答案 0 :(得分:3)
您应该使用Future。get(long timeout, TimeUnit unit),并捕获TimeoutException。 get()没有默认超时,它将等待永远。
除非调用Future.get()的线程被中断,否则不会抛出InterruptedException。
答案 1 :(得分:3)
调用rssFuture.get()
时应该传递一个timeout参数并捕获TimeoutException。只有当运行call
的线程被Thread.interrupt
方法中断或者在Future obj中调用cancel(true)
方法时,才会发生InterruptedException。