概要

通过CompletableFuture实现异步代码块功能

技术细节

功能一

无返回值的异步代码块 CompletableFuture.runAsync(Runnable)

CompletableFuture.runAsync(() -> {
            // 异步任务
        });

功能二

有返回值的异步代码块

CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
            // 异步任务
            return "Hello World";
        });
        // 处理结果
        //   方式一:阻塞等待结果
        future.get();
        //   方式二:超时等待结果
        future.get(5, TimeUnit.SECONDS);

功能三

执行多个异步任务,获取最早的执行任务结果

// 任务一
        CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> "Hello World");
        // 任务二
        CompletableFuture<String> future2 = CompletableFuture.supplyAsync(() -> "Hello World");
        // 合并任务
        CompletableFuture<Object> anyOf = CompletableFuture.anyOf(future, future2);
        // 获取结果
        anyOf.get();

功能四

执行多个异步任务,并等待全部执行完成

// 任务一
        CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> "Hello World");
        // 任务二
        CompletableFuture<Integer> future2 = CompletableFuture.supplyAsync(() -> 0);
        // 合并任务
        CompletableFuture<Void> allOf = CompletableFuture.allOf(future, future2);
        // 阻塞等待全部任务完成
        allOf.get();

优势

可通过简单的方式实现对方法中的部分代码异步执行 可以通过lambda 快速实现接口