JUC--CompletableFuture下

对计算速度进行选用

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;

public class Test4 {
    public static void main(String[] args) {
        CompletableFuture<String> a = CompletableFuture.supplyAsync(() -> {
            try { TimeUnit.SECONDS.sleep(4); } catch (InterruptedException e) {e.printStackTrace();}
            return "a";
        });
        CompletableFuture<String> b = CompletableFuture.supplyAsync(() -> {
            try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) {e.printStackTrace();}
            return "b";
        });
        //谁快用谁
        CompletableFuture<String> result = a.applyToEither(b, f -> {
            return f;
        });
        System.out.println(result.join());

    }
}

对计算结果进行合并

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;

public class Test4 {
    public static void main(String[] args) {
        CompletableFuture<Integer> a = CompletableFuture.supplyAsync(() -> {
            try { TimeUnit.SECONDS.sleep(4); } catch (InterruptedException e) {e.printStackTrace();}
            return 10;
        });
        CompletableFuture<Integer> b = CompletableFuture.supplyAsync(() -> {
            try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) {e.printStackTrace();}
            return 20;
        });
        //等待俩者结果一起返回
        CompletableFuture<Integer> result = a.thenCombine(b, (x,y) -> {
            return x + y;
        });
        System.out.println(result.join());

    }
}

猜你喜欢

转载自blog.csdn.net/a2285786446/article/details/131558407
JUC