Schließlich Logik an CompleteableFuture anhängen [Duplikat]Java

Java-Forum
Anonymous
 Schließlich Logik an CompleteableFuture anhängen [Duplikat]

Post by Anonymous »

Ich muss asynchron zukünftiger Wert konsumieren und dann Logik X ausführen. Bei allen Ausnahmen möchte ich auch Logik X ausführen. In gewisser Weise ist es semantisch vergleichbar mit dem endgültigen block. Aber wenn ich mich nicht irre, müsste ich auf hässliche Lambdas zurückgreifen, die Null s zurückgeben. Ich hasse es, NULL s sowie lockige Klammern zurückzugeben (sie beeinträchtigen die Code -Lesbarkeit, IMO). In der Zwischenzeit wird ein Fortschrittsdialog angezeigt. Es sollte nach Abschluss der Operation erfolgreich oder nicht entsorgt werden. Ich habe die tatsächliche Benennung ein wenig geändert. private CompletableFuture fillTableAsync() {
String title = "Loading table data...";
ProgressDialog progressDialog = new ProgressDialog(title);
CompletableFuture futureFill = CompletableFuture.supplyAsync(this::loadData)
.thenAccept(this::fillTable)
.thenRun(progressDialog::dispose)
.exceptionally(t -> {
progressDialog.dispose();
return null;
});
SwingUtilities.invokeLater(() -> progressDialog.setVisible(true));
return futureFill;
}
< /code>
Was ich will: < /p>
.finallyRun(progressDialog::dispose);
< /code>
Oder zumindest: < /p>
.thenRun(progressDialog::dispose)
.exceptionally(progressDialog::dispose);
< /code>
Während diese Optionen nicht verfügbar sind, gibt es möglicherweise einige sauberere Möglichkeiten, dies zu tun, die mir nicht bekannt ist. < /p>
Wie soll ich es tun? Kann ich es sauberer machen? < /P>
Java 8. Guava. Apache (Commons, Sammlungen).

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post