Pergunta

Estou usando rosqueamento assíncrono no meu aplicativo com httpclient. Eu faço uma ligação usando a API futura como assim

mStrResults = (String) rssFuture.get();

Esta chamada tenta recuperar uma string html retornada do meu método de chamada httpclient chamável ().

O que eu quero fazer, no entanto, é garantir que o método GET não espere muito tempo enquanto executa o método Call (). Devo passar um parâmetro de tempo limite ao chamar rssfuture.get () ou é bom cercar apenas um bloco de captura interruptedException?

Além disso, existe um tempo padrão em que o encadeamento assíncrono esperará antes de jogar uma interrupção e, se sim, posso definir um valor personalizado?

Foi útil?

Solução

Você deve passar um parâmetro de tempo limite ao ligar rssFuture.get() e pegue a timeoutException. Uma interruptedException só acontecerá se o tópico executando o seu call é interrompido com o Thread.interrupt método ou se você ligar para o cancel(true) Método no futuro obj.

Outras dicas

Você deve usar o futuro.Obtenha (tempo limite de longo prazo, unidade de unidade de tempo), e pegue timeoutException. Não há tempo limite padrão para get (), ele vai esperar para todo sempre.

InterrompedException não será jogado, a menos que o encadeamento chamado Future.get () seja interrompido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top