CompletableFuture 开启异步线程,主线程不等待

在Java中CompletableFuture用于异步编程,异步编程是编写非阻塞的代码,运行的任务在一个单独的线程,与主线程隔离,并且会通知主线程它的进度,成功或者失败。

在这种方式中,主线程不会被阻塞,不需要一直等到子线程完成。主线程可以并行的执行其他任务。

使用这种并行方式,可以极大的提高程序的性能。

一般应用场景:在业务开发中可能会遇到调用多个第三方接口,同时要求主流程不被阻塞。

复制代码
    public static void main(String[] args) throws Exception {
        // 开启一个线程(无返回值)
        CompletableFuture<Void> voidCompletableFuture = CompletableFuture.runAsync(() -> {
            try {
                TimeUnit.SECONDS.sleep(3);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        });
        // 开启一个线程(有返回值)
        CompletableFuture<Integer> integerCompletableFuture = CompletableFuture.supplyAsync(() -> {
            try {
                Thread.sleep(3);
                return 1;
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        });
        {
            // do things
        }
        // 等待异步现成执行完
        CompletableFuture.allOf(integerCompletableFuture).get();
        // 等待多个异步现成执行完
        CompletableFuture.allOf(voidCompletableFuture,integerCompletableFuture).get();
        // 打印异步结果
        System.out.println(integerCompletableFuture.get());
        System.out.println("over");
    }
相关推荐
chéng ௹4 分钟前
前端转编码(encodeURIComponent)以及解码(decodeURIComponent)
开发语言·前端·javascript
v***43174 分钟前
SpringBoot中Get请求和POST请求接收参数详解
java·spring boot·spring
bbq粉刷匠5 分钟前
java刷题-day1
java·开发语言
讓丄帝愛伱10 分钟前
excel导出实例
java·python·excel
温轻舟14 分钟前
禁毒路上,任重道远 | HTML页面
开发语言·前端·javascript·css·html·温轻舟
p***q7829 分钟前
SpringBoot实战:高效实现API限流策略
java·spring boot·后端
学历真的很重要34 分钟前
Hello-Agents —— 03大语言模型基础 通俗总结
开发语言·人工智能·后端·语言模型·自然语言处理·面试·langchain
3***161037 分钟前
【JavaEE】Spring Boot 项目创建
java·spring boot·java-ee
6***v41741 分钟前
VScode 开发 Springboot 程序
java·spring boot·后端
t***316544 分钟前
SpringBoot中自定义Starter
java·spring boot·后端