CompletableFuture的thenCombineAsync

简介: CompletableFuture的thenCombineAsync代码:private void test() { System.

CompletableFuture的thenCombineAsync

代码:

private void test() {
    System.out.println("开始...");

    CompletableFuture.supplyAsync(new Supplier<String>() {
        @Override
        public String get() {
            try {
                TimeUnit.SECONDS.sleep(1);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

            System.out.println("返回 zhang");
            return "zhang";
        }
    }).thenCombineAsync(CompletableFuture.supplyAsync(new Supplier<String>() {
        @Override
        public String get() {
            try {
                TimeUnit.SECONDS.sleep(3);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

            System.out.println("返回 phil");
            return "phil";
        }
    }), new BiFunction<String, String, Object>() {
        @Override
        public Object apply(String s1, String s2) {
            String s = s1 + " , " + s2;
            System.out.println("apply:" + s);
            return s;
        }
    }).whenCompleteAsync(new BiConsumer<Object, Throwable>() {
        @Override
        public void accept(Object o, Throwable throwable) {
            System.out.println("accept:" + o.toString());
        }
    });

    System.out.println("运行至此.");
}

运行输出:

07-10 16:12:37.230 29410-29410/zhangphil.test I/System.out: 开始...
07-10 16:12:37.235 29410-29410/zhangphil.test I/System.out: 运行至此.
07-10 16:12:38.234 29410-29450/zhangphil.test I/System.out: 返回 zhang
07-10 16:12:40.236 29410-29451/zhangphil.test I/System.out: 返回 phil
07-10 16:12:40.237 29410-29451/zhangphil.test I/System.out: apply:zhang , phil
07-10 16:12:40.237 29410-29450/zhangphil.test I/System.out: accept:zhang , phil

相关文章
|
9天前
|
Java API
java多线程之FutureTask、Future、CompletableFuture
java多线程之FutureTask、Future、CompletableFuture
|
5月前
CompletableFuture
CompletableFuture
23 0
|
6月前
|
Java 数据处理 数据库
CompletableFuture 使用
CompletableFuture 使用
34 0
|
7月前
|
消息中间件 Java 中间件
Future and CompletableFuture
Future代表异步执行的结果,也就是说异步执行完毕后,结果保存在Future里, 我们在使用线程池submit()时需要传入Callable接口,线程池的返回值为一个Future,而Future则保存了执行的结果 ,可通过Future的get()方法取出结果,如果线程池使用的是execute(),则传入的是Runnable接口 无返回值。
36 0
|
7月前
|
Java 调度
并发编程——Future & CompletableFuture
Java创建线程的方式,一般常用的是Thread,Runnable。如果需要当前处理的任务有返回结果的话,需要使用Callable。Callable运行需要配合Future。
25 0
|
8月前
|
Java Linux
JUC--CompletableFuture上
Future接口(FutureTask实现类)定义了操作异步任务执行一些方法,如获取异步任务的执行结果,取消任务带带执行,判断任务是否被取消,判断任务执行是否完毕等。
|
8月前
JUC--CompletableFuture下
简单介绍CompletableFuture
|
8月前
|
Java
CompletableFuture总结和实践
CompletableFuture被设计在Java中进行异步编程。异步编程意味着在主线程之外创建一个独立的线程,与主线程分隔开,并在上面运行一个非阻塞的任务,然后通知主线程进展,成功或者失败。
217 0
Zp
【CompletableFuture】CompletableFuture中join()和get()方法的区别
【CompletableFuture】CompletableFuture中join()和get()方法的区别
Zp
502 0
|
Java 测试技术
CompletableFuture使用详解
CompletableFuture是jdk8的新特性。CompletableFuture实现了CompletionStage接口和Future接口
216 0
CompletableFuture使用详解