Ich versuche, die CompletableFuture Schnittstelle in Java 8. Mein aktueller Code zu verstehen ist:CompletableFuture: nach asynchroner Aufruf, Prozessergebnis in aktuellen Thread
CompletableFuture.supplyAsync(() -> wachtwoordBijwerken(gebruikersnaam, wachtwoord))
.thenAccept(this::saveOrUpdateGebruiker)
.exceptionally(e ->
{
log.error("Fout bij het bijwerken van wachtwoord voor gebruiker: " + gebruikersnaam, e);
return null;
});
ich den Anruf saveOrUpdateGebruiker()
erwartet im Hauptthread laufen nachdem der asynchrone Aufruf im neu erstellten Thread abgeschlossen ist. Der Aufruf befindet sich jedoch immer noch in einem anderen Thread, was Probleme in der zugrunde liegenden Hibernate-Implementierung verursacht.
Gibt es eine Möglichkeit, CompletableFuture
für einen nicht blockierenden Async-Aufruf zu verwenden und trotzdem das Ergebnis in meinem aktuellen Thread zu verwenden?
also das Ergebnis ist eine blockierende Sync-Aufruf? (wegen der get() -Funktion) – Cloud
Nun, es sei denn, Sie 'isDone()' abfragen. Nur so können Sie den aktuellen Thread ausführen. – Kayaman