0

Ich habe eine Methode, die ein CompletionStage zurückgibt. Die Antwort interessiert mich nicht. Wie kann ich die Methode asynchron auslösen? Wird die Vervollständigungsstufe nicht blockierend ausgeführt, indem einfach die Methode aufgerufen wird?Java Fire and Forget CompletionStage/CompletableFuture

Antwort

0

Sie können durch supplyAsync statische Methode aufrufen.

Sehen Sie diese Methode:

public CompletionStage<String> method() { 
    return CompletableFuture.supplyAsync(() -> { 
     // do your work and return the same type inside <> 
     return "Hello World"; 
    }); 
} 

es nennen zu feuern nur die Methode.

0

Es hängt davon ab, wie das Verfahren angegeben wird/implementiert, aber in der Regel ist es nicht blockierend.

Die Sache ist, dass es sehr einfach ist, eine Methode zu implementieren, die eine vollständige CompletableFuture zurückgibt, und daher ist das überhaupt nicht asynchron.

jedoch wichtig, was ist das, was Sie mit dem zurück CompletionStage tun nicht beeinflussen, ob die Methode asynchron ist oder nicht. Dies hängt nur von der Methodenspezifikation ab. Wenn eine Methode eine CompletionStage zurückgibt, liegt dies daran, dass sie einen asynchronen Vorgang ausführt. Es ist jedoch auch möglich, dass ein Wrapper (z. B. ein Proxyobjekt wie Spring @Async) die Operation asynchron ausführt. In diesem Fall müssen Sie sicherstellen, dass Sie den Wrapper durchlaufen, um eine asynchrone Ausführung zu erhalten.