2008-12-09 3 views
1

Im, использующая асинхронную потоковую передачу в моем приложении С помощью httpClient. Я делаю вызов с помощью будущего Api как такFuture.get() и InterruptedException Асинхронная потоковая обработка

mStrResults = (String) rssFuture.get(); 

этого вызова пытается получить HTML-строку, возвращенную из моего отзывного HTTPClient вызова метода().

Тем не менее, я хочу, чтобы метод get не слишком долго ожидал выполнения метода call(). Должен ли я передавать параметр таймаута при вызове rssFuture.get() или нормально ли окружить блокировкой прерывания Exception?

Также есть время по умолчанию, которое асинхронный поток будет ждать до того, как будет выбрано InterruptedException, и если да, то могу ли я установить пользовательское значение?

ответ

3

Вы должны передать параметр таймаута при вызове rssFuture.get() и поймать исключение TimeoutException. Прерывание прерывания произойдет только в том случае, если поток, выполняющий ваш call, прерван с помощью метода Thread.interrupt или если вы вызываете метод cancel(true) в будущем.

2

Вы должны использовать будущее. get(long timeout, TimeUnit unit), и catch TimeoutException. Не существует тайм-аута по умолчанию для get(), он будет ждать forever.

Прерванное исключение не будет выбрано, если поток, вызывающий Future.get(), не прерывается.