Frage

Ist es sicher anzunehmen, dass das

java.util.concurrent.CompletionService.take().isDone() 

Wird immer wahr zurückkehren? Wenn ja, warum nimmt () eine Zukunft zurück und nicht den Wert direkt? Wenn nicht, was bedeutet "abgeschlossene Aufgabe", wie in der Dokumentation verwendet?

War es hilfreich?

Lösung

Weil Sie die Zukunft für andere Dinge nutzen können. Sie erhalten die Zukunft, wenn Sie einreichen (). Sie können also zunächst das zukünftige Objekt verwenden, das zurückgegeben wurde, um den Status zu überwachen oder vorzeitig abzusagen. Zweitens, wenn Sie die FutureFactory () (ich denke, es wird etwas anderes bezeichnet, aber ich habe Java 5 nicht installiert), können Sie alle möglichen zusätzlichen Mitglieder zum zukünftigen Objekt hinzufügen.

Wenn Sie also das take () machen, haben Sie Recht, dass in diesem Fall Teil der Zukunft (die Verfolgung/Stornierung des Staates) nicht sehr nützlich ist. Aber Otoh, warum nicht die gesamte Zukunft wie es ist, einschließlich erweiterter Funktionen?

Andere Tipps

Das scheint der Javadoc zu implizieren, take() Blöcke, bis es eine fertige Zukunft zurückgeben kann, was natürlich zu tun wird, wenn sie zurückgegeben wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top