首页 > 编程语言 >异步编程CompletableFuture的一些使用demo

异步编程CompletableFuture的一些使用demo

时间:2024-08-21 14:15:54浏览次数:11  
标签:info 异步 log demo executor future CompletableFuture res

 

 

public static ThreadPoolExecutor executor=new ThreadPoolExecutor(5,5,5L, TimeUnit.SECONDS,new LinkedBlockingQueue<>(1000),new ThreadPoolExecutor.CallerRunsPolicy());

    public static void main(String[] args) throws Exception {
        CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> {
            log.info(">>>>>>>>>>>先执行这个 并且设置返回值");
            return 10/2;
        }, executor);

        CompletableFuture<Void> future1 = CompletableFuture.runAsync(() -> {
            log.info(">>>>>>>>>>>这个没有返回值的");
        }, executor);


        CompletableFuture<Void> future2 = future.thenAcceptAsync((res) -> {
            log.info(">>>>>>>>>>>这个是在future执行完后执行这个, res 就是 future 执行的结果:{}", res);
            log.info(">>>>>>>>>>>这个没有返回值");
        },executor);



        CompletableFuture<String> future3 = future.thenApplyAsync((res) -> {
            log.info(">>>>>>>>>>>> 这个也是在future 执行完后执行,res也是future 执行的结果:{} ",res);
            log.info(">>>>>>>>>>这个是可以有返回值的");
            return "1";
        },executor);


        //等待所有任务执行完成 因为future2 是在future 完成之后执行的 所以这个 future 没必要放进去
        CompletableFuture.allOf(future1,future2,future3).get();

        //只要有一个完成就可以
       // CompletableFuture.anyOf(future1,future2,future3).get();

        System.out.println(future3.get());
    }

 

标签:info,异步,log,demo,executor,future,CompletableFuture,res
From: https://www.cnblogs.com/pxblog/p/18371490

相关文章

  • 异步交互技术Ajax-Axios
    目录一、同步交互和异步交互二、Ajax 1.概述2.如何实现ajax请求三、异步传输数据乱码的问题regist.html页面代码 服务端代码处理四、Axios1. Axios的基本使用(1)引入Axios文件(2)使用Axios发送请求,并获取响应结果。2.案例3.请求方法的别名(推荐用这个,简单)一、同......
  • PHP8.1新增的异步HTTP客户端
    php8.1新增的异步http客户端随着互联网的快速发展,各种Web应用程序的性能也变得越来越重要。为了提供更好的用户体验,开发人员需要使用高效的工具和技术来处理各种网络请求。幸运的是,PHP8.1引入了一个全新的功能,即异步HTTP客户端,它允许我们以非阻塞的方式执行HTTP请求,从而提高应用......
  • Netty 异步任务模型 及 Future-Listener 机制
    https://cloud.tencent.com/developer/article/2246990一、Netty模型二、异步模型三、Future-Listener机制四、Future-Listener机制代码示例 以服务器端为例1.线程池:Netty模型核心就是两个线程池,BossGroup线程池和WorkerGroup线程池;①BossGroup......
  • 【实用】【一眼就会】【直接可用】文件上传 附件上传 前后端分离 分布式 多文件上传
    思路:1、先保存主要信息,存到数据库。2、查询这条数据的id、uid3、上传附件功能:根据id、uid、文件。请求:附件API接口。4、后端接口中:先判断登录状态,5、创建对应的文件夹并存入文件,文件夹名以id名命名。6、把附件名重命名,以uuid命名。7、把所有的文件路径放到集合里,传入id......
  • python异步
    fastapi是一个异步的web框架。Starlette是一个轻量级、快速的PythonASGI框架,专为构建高性能异步Web应用和微服务而设计。它是FastAPI的核心依赖之一,许多FastAPI的功能都基于Starlette提供的组件。Starlette以其简洁的设计和丰富的功能而著称,非常适合构建现代异步W......
  • 异步组件与suspense
    异步组件:通过延迟加载组件,只有在需要时才会加载它们。异步组件在大型应用程序中非常有用,因为它们可以减少初始加载时间,并按需加载部分代码。异步组件的常见使用场景路由懒加载:在大型单页应用中,将路由对应的组件设置为异步组件,以减少初始加载时间。按需加载:当页面中某些组件只......
  • C# 异步方法
    概念:异步方法是使用async和await关键字创建的,其中async关键字用于声明异步方法,而await关键字用于等待异步操作完成。它们允许你编写非阻塞代码,即代码在等待异步操作完成时不会阻塞调用线程。这种编程模型(异步编程模型)通常用于提高应用程序的响应能力,异步编程是一种编程范式,C#......
  • Java 使用 CompletableFuture 简化异步调用
    使用CompletableFuture可以大大简化处理多线程之间的异步调用关系,如串行依赖、并行、聚合等等。CompletableFuture是对Future接口的扩展和增强,进行了丰富的接口方法扩展,完美的弥补了Future的不足。本篇博客通过代码的方式,展示CompletableFuture的常用方法,体验其强大灵......
  • 【项目】多设计模式下的同步&&异步日志系统(二)
    继上文对日志系统的介绍,并且实现了日志等级、日志消息的定义、以及格式化消息等。由这三个模块就能完整的输出一条消息。但是考虑到日志消息不可能全部都通过显示器展示。本项目针对落地方式,也进行多种编写,以供使用。消息落地类(简单工厂模式)消息落地的方式标准输出文件按......
  • 【项目】多设计模式下的同步&&异步日志系统(三)
    继前俩次完成了日志系统的等级类、消息结构以及格式化消息,并且将格式化的数据实现落地。落地存在同步和异步的落地方式。同步:本线程生成消息,并且进行IO写。异步:线程生成消息,交给子线程写。为此实现了双缓冲区用来减少异步带来的频繁申请锁释放锁减低效率。本文继续实现异步......