当前位置: 首页 > article >正文

jdk8特性:CompletableFuture的使用

需求:在java代码中,我需要这样。就是异步执行,我主线程等待,异步执行的那个必须显示调用告知已经执行完毕,主线程才能执行 。

示例:

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;

public class AsyncExample {

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        // 创建一个CompletableFuture对象
        CompletableFuture<Void> future = new CompletableFuture<>();

        // 启动一个新线程来执行异步任务
        new Thread(() -> {
            try {
                // 模拟异步操作
                Thread.sleep(2000);

                // 异步任务完成后,显式地调用CompletableFuture的complete方法
                future.complete(null);
                System.out.println("Async task completed and notified main thread.");
            } catch (InterruptedException e) {
                // 如果异步任务被中断,则调用completeExceptionally方法通知主线程异常
                future.completeExceptionally(e);
            }
        }).start();

        // 主线程等待异步任务完成
        future.get(); // 这会阻塞主线程直到CompletableFuture被完成或出现异常

        // 当future.get()返回时,说明异步任务已经完成
        System.out.println("Main thread continues after async task completion.");
    }
}


http://www.kler.cn/a/409462.html

相关文章:

  • Centos-stream 9,10 add repo
  • java 老矣,尚能饭否?
  • 区块链讲解
  • 从零开始-VitePress 构建个人博客上传GitHub自动构建访问
  • listening comprehension
  • 1-测试go-redis缓存数据
  • 小R的随机播放顺序
  • 论文 | Recitation-Augmented Language Models
  • 6.STM32之通信接口《精讲》之USART通信(PC串口与OLED交互)---多字节数据收发(数据包的模式:HEX数据包和文本数据包)
  • 五天SpringCloud计划——DAY1之mybatis-plus的使用
  • SpringBoot3中的性能提升介绍
  • Linux上安装单机版ElasticSearch6.8.1
  • 设计模式之创建模式篇
  • 签到送金币项目
  • 集合Queue、Deque、LinkedList、ArrayDeque、PriorityQueue详解
  • FastAPI和SQLModel结合的优点
  • 拉格朗日乘子(Lagrange Multiplier)是数学分析中用于解决带有约束条件的优化问题的一种重要方法,特别是SVM
  • selenium grid 远程webdriver添加上网代理
  • 7-401 平均值
  • Git 提交的相对引用
  • 【Linux】安装cuda
  • 实验7 JavaScript编程基础7.1密码验证
  • go-web项目通用脚手架
  • 每天100w次登录请求,8G内存该如何设置JVM参数?
  • 论文解析:EdgeToll:基于区块链的异构公共共享收费系统(2019,IEEE INFOCOM 会议);layer2 应对:频繁小额交易,无交易费
  • 数据库-MySQL-Dynamic-Datasource源码解析