Future.get () und InterruptedException Asynchronous Einfädeln
-
20-08-2019 - |
Frage
Im mit asynchronen Einfädeln in meiner Anwendung mit Httpclient. Ich mache einen Anruf in die Zukunft Api mit wie so
mStrResults = (String) rssFuture.get();
Dieser Aufruf versucht, eine HTML-Zeichenfolge zurückgegeben von meinem aufrufbare Httpclient-Methode call () abgerufen werden.
Was ich will, aber zu tun ist, sicherzustellen, dass die Methode get lange nicht zu nicht warten, während die Methode call () ausgeführt wird. Sollte ich einen Timeout-Parameter übergeben, wenn rssFuture.get () aufrufen, oder ist es in Ordnung, mit einem InterruptedException catch-Block nur zu umgeben?
Auch gibt es eine Standard-Zeit, welche der asynchrone Thread vor einem InterruptedException werfen warten wird und wenn ja, kann ich einen benutzerdefinierten Wert?
Lösung
Sie sollten einen Timeout-Parameter übergeben, wenn rssFuture.get()
Aufruf und die Timeout fangen. Ein InterruptedException geschieht nur, wenn der Thread die Ihre call
läuft mit dem Thread.interrupt
Verfahren unterbrochen wird oder wenn Sie die cancel(true)
Methode in der Zukunft obj nennen.
Andere Tipps
Sie sollten zukünftige Verwendung. get (long timeout, Timeunit Einheit) und fangen Timeout. Es gibt kein Standard-Timeout für get (), wird es warten immer .
InterruptedException wird nicht ausgelöst werden, wenn der Thread ruft Future.get () unterbrochen wird.