2008-12-09 121 views
1

在我的應用程序中使用異步線程WITH httpClient。我使用Future API撥打電話Future.get()和InterruptedException異步線程

mStrResults = (String) rssFuture.get(); 

此調用嘗試檢索從我的Callable httpClient call()方法返回的html字符串。

但是我想要做的是確保get方法在執行call()方法時不會等待太久。我應該在調用rssFuture.get()時傳遞一個超時參數嗎?或者可以用一個InterruptedException catch塊來包圍嗎?

此外,還有一個默認的時間,異步線程將在投擲InterruptedException之前等待,如果是的話,我可以設置一個自定義值?

回答

3

調用rssFuture.get()時應該傳遞一個超時參數並捕獲TimeoutException。如果運行call的線程被Thread.interrupt方法中斷,或者您調用Future obj中的cancel(true)方法,則只會發生InterruptedException。

2

您應該使用Future。 get(long timeout, TimeUnit unit),並捕獲TimeoutException。 get()沒有默認超時,它將永遠等待

除非調用Future.get()的線程中斷,否則不會拋出InterruptedException。