Вопрос

Я использую асинхронную обработку потоков в своем приложении С httpClient.Я делаю звонок, используя Future Api, вот так

mStrResults = (String) rssFuture.get();

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

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

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

Это было полезно?

Решение

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

Другие советы

Вам следует использовать Future.get(длинный таймаут, единица измерения TimeUnit), и поймать TimeoutException.Для get() нет тайм-аута по умолчанию, он будет ждать навсегда.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top