Question

J'utilise un thread asynchrone dans mon application WITH httpClient. Je passe un appel en utilisant l’API du futur comme si

mStrResults = (String) rssFuture.get();

Cet appel tente de récupérer une chaîne HTML renvoyée par ma méthode Callable httpClient call ().

Ce que je veux toutefois faire, c’est que je veille à ce que la méthode get n’attende pas trop longtemps lors de l’exécution de la méthode call (). Dois-je passer un paramètre de délai d’attente lors de l’appel de la fonction rssFuture.get () ou est-ce correct de simplement entourer d’un bloc catch InterruptedException?

Existe-t-il également un délai par défaut pendant lequel le thread asynchrone attend avant de lancer une exception InterruptedException et, dans l'affirmative, puis-je définir une valeur personnalisée?

Était-ce utile?

La solution

Vous devez passer un paramètre de délai d'expiration lorsque vous appelez rssFuture.get() et intercepter l'exception TimeoutException. Une exception InterruptedException ne se produira que si le thread qui exécute votre call obtient interrompu avec la méthode Thread.interrupt ou si vous appelez la méthode cancel(true) dans le futur obj.

Autres conseils

Vous devez utiliser Future. get (long délai d'attente, unité TimeUnit) , et catch TimeoutException. Il n'y a pas de délai d'attente par défaut pour get (), il attendra pour toujours .

InterruptedException ne sera levée que si le thread appelant Future.get () est interrompu.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top