Verwenden Sie die Ergebnisse von zwei verschiedenen Guava ListenableFutures

8

Ich habe zwei ListenableFutures, die auf anderen Threads abgeschlossen sind. Jede Zukunft ist von einem anderen Typ, und ich möchte beide Ergebnisse verwenden, wenn sie beide vollständig sind.

Gibt es einen eleganten Weg, um mit Guava umzugehen?

    
sdgfsdh 07.12.2012, 12:49
quelle

4 Antworten

1
%Vor%

Nicht wirklich elegant, aber sollte den Job machen.

Oder eleganter, aber Sie brauchen Guss:

%Vor%     
JB Nizet 07.12.2012, 13:07
quelle
8

Wenn Sie eine Art von Sicherheit wünschen, können Sie Folgendes tun:

%Vor%

In diesem Fall kann Composite ein Pair<A, B> von Apache Commons sein, wenn Sie möchten.

Auch ein Fehler in jeder Zukunft führt zu einem Fehler in der resultierenden kombinierten Zukunft.

Eine andere Lösung wäre, Trickle vom Spotify-Team zu sehen. Das GitHub README hat ein Beispiel, das eine Lösung für ein ähnliches Problem zeigt.

Es gibt zweifellos andere Lösungen, aber diese ist mir in den Sinn gekommen.

    
fido 14.03.2014 20:41
quelle
0

Wenn Sie eine Art Sicherheit wünschen, können Sie das Ergebnis von zwei verschiedenen unabhängigen Aufgaben kombinieren, indem Sie EventBus vom Schwesterpaket Guava com.google.common.eventbus verwenden

Nehmen wir als Beispiel an, dass einer von Ihnen Futures Integer und der andere Double zurückgibt.

Erstellen Sie zuerst eine Akkumulatorklasse (andere Namen Builder , Kollektor usw.), die Sie mit EventBus als Ereignissenke registrieren. Wie Sie sehen können, ist es wirklich ein POJO, der Integer und Double Events

übernimmt %Vor%

Hier ist die Implementierung der Methode, die 2 Futures braucht und sie zu einem Akkumulator kombinieren wird.

%Vor%     
Alexander Pogrebnyak 22.03.2013 16:31
quelle
0

Hier ist ein einfaches Beispiel, das die Hinzufügung von zwei hörbaren Futures durchführen würde:

%Vor%     
mad_fox 23.02.2016 20:31
quelle

Tags und Links