Wenn ich ein ListenableFuture<X>
beim Aufruf eines externen Systems mit der AsyncHttpClient
, und ich rufe get()
sofort - wird der aktuelle Thread nicht warten, bis der asynchrone Thread mit einer Antwort bereit ist? Wenn das stimmt, was ist der Vorteil der Verwendung von AsyncHttpClient
?get() sofort nach Erhalt ListenableFuture
AsyncHttpClient httpClient = new AsyncHttpClient();
ListenableFuture<Response> futureResponse = httpClient.execute(url, payload, headers);
// If this is immediately on next line, am I getting any benefit?
Response response = futureResponse.get();
Ja, es wird warten bis die 'Zukunft' abgeschlossen ist. AsyncHttpClient hat hier keinen Vorteil. –
Wenn Sie zwei oder mehr Anfragen gleichzeitig ausführen möchten, können Sie sie gleichzeitig ausführen und darauf warten, dass sie abgeschlossen werden. Dies dauert nur so lange wie die Anforderung mit der längsten Dauer und nicht die Gesamtzeit aller zusammengesetzten Anforderungen. –
Wenn ich pro Hauptthread eine asynchrone Anfrage gestellt habe - bleibt dann jeder Hauptthread blockiert, bis async IO abgeschlossen ist? Bedeutet das - ich kann keinen asynchronen Client nutzen? – DanglingPointer