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.
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
Hier ist die Implementierung der Methode, die 2 Futures braucht und sie zu einem Akkumulator kombinieren wird.
%Vor%