Posts

Asynchrone Programmierung mit Java, thenCombine and thenCompose

avatar of @ozelot47
25
@ozelot47
·
0 views
·
1 min read

Mit thenCombine und thenCompose lassen sich zwei abhängige bzw. unabhängige asynchrone Funktionen kombinieren.

import java.util.concurrent.CompletableFuture; 
 
public class Asynchron { 
 
    /<em> dummy function for dependent futures 1 </em>/ 
    private CompletableFuture<String> getForName(String forname) { 
        return CompletableFuture.supplyAsync( 
            () -> {return forname;} 
        ); 
    } 
 
    /<em> dummy function for dependent futures 2 </em>/ 
    private CompletableFuture<String> getSurName(String forname, String surname) { 
        return CompletableFuture.supplyAsync( 
            () -> {return forname + " " + surname;} 
        ); 
    } 
 
    /<em> add two independent futures where the results are not dependent </em>/ 
    public void independentFutures(){ 
        CompletableFuture<String> future = getForName("Heinrich ").thenCombine( 
            (getSurName("Not", "Dependent")), (x,y) -> { 
                return x.concat(y); 
            }); 
        String independend_string = future.join(); 
        System.out.println(independend_string); 
    } 
 
    /<em> add tow futures where the results are dependent </em>/ 
    public void dependentFutures(){ 
        CompletableFuture<String> future = getForName("Heinrich ").thenCompose( 
            (forname) -> { 
                return getSurName(forname, "Skalitz"); 
            }); 
        String independend_string = future.join(); 
        System.out.println(independend_string); 
    } 
     
    public static void main(String[] args){ 
        Asynchron async = new Asynchron(); 
        async.independentFutures(); 
        async.dependentFutures(); 
    } 
} 

)