知识改变命运! CompletableFuture:强大的异步编程工具 _newnew-lskyf博客社区

CompletableFuture:强大的异步编程工具

newnew 7月前 ⋅ 797 阅读 ⋅ 3 个赞

CompletableFuture:强大的异步编程工具

CompletableFuture是Java 8引入的一个强大的异步编程工具。它提供了一种简单而灵活的方式来处理并发任务和异步操作。CompletableFuture类实现了Future接口,并提供了更多的功能和灵活性。

CompletableFuture的核心概念是Promise。Promise是一种表示未来结果的对象,它允许我们在结果可用之前执行其他操作。CompletableFuture可以看作是Promise的增强版,它提供了更多的操作和组合方式。

CompletableFuture可以用于执行异步任务,并在任务完成后执行回调操作。它支持链式调用,允许我们按照特定的顺序组合多个异步操作。这种链式调用的方式可以大大简化异步编程的复杂性。

以下是一些CompletableFuture的常用方法和操作:

1.创建CompletableFuture对象:

  • CompletableFuture.supplyAsync(Supplier<T> supplier) :使用指定的Supplier异步执行任务,并返回CompletableFuture对象。
  • CompletableFuture.runAsync(Runnable runnable) :使用指定的Runnable异步执行任务,并返回CompletableFuture对象。

2.转换结果:

  • thenApply(Function<? super T,? extends U> fn) :在CompletableFuture完成后,将结果传递给指定的函数,并返回新的CompletableFuture对象。
  • thenAccept(Consumer<? super T> action) :在CompletableFuture完成后,对结果执行指定的操作,无返回值。
  • thenRun(Runnable action) :在CompletableFuture完成后,执行指定的操作,无返回值。

3.组合多个CompletableFuture:

  • thenCombine(CompletionStage<? extends U> other, BiFunction<? super T,? super U,? extends V> fn) :组合两个CompletableFuture的结果,并将结果传递给指定的函数。
  • thenCompose(Function<? super T,? extends CompletionStage<U>> fn) :将CompletableFuture的结果传递给指定的函数,返回新的CompletableFuture对象。

4.异常处理:

  • exceptionally(Function<Throwable,? extends T> fn) :在CompletableFuture发生异常时,执行指定的函数进行处理,并返回新的CompletableFuture对象。
  • handle(BiFunction<? super T,Throwable,? extends U> fn) :在CompletableFuture完成或发生异常时,执行指定的函数进行处理,并返回新的CompletableFuture对象。

5.获取所有结果:

  • 若要获取多个CompletableFuture的所有结果,可以使用 CompletableFuture.allOf(CompletableFuture<?>... cfs) 方法。 该方法接受一个CompletableFuture数组,并返回一个新的CompletableFuture,当数组中的所有CompletableFuture完成时,该新CompletableFuture也会完成。您可以通过遍历原始CompletableFuture数组并调用 join() 方法来获取每个CompletableFuture的结果。

CompletableFuture是一种强大而灵活的工具,可以在异步编程中提供很多便利。它的使用可以大大简化并发任务的处理和异步操作的管理。无论是处理网络请求、数据库查询还是其他耗时操作,CompletableFuture都是一个值得探索的工具。


全部评论: 0

    我有话说:

    xshell可以实现本地编辑服务器运行效果吗?这样就不必每次都手动修改上传了

    需求背景: xshell可以实现本地编辑服务器运行效果吗?这样就不必每次都手动修改上传了 Xshell操作说明: Xshell可以实现本地编辑服务器运行效果。Xshell是一款功能强大SSH

    SpringBoot系列17-统一异常处理(包含简单JSR303参数校验)

    原文链接:https://www.lskyf.com/post/211 方法1.通过ControllerAdvice实现+简单JSR303参数校验实现 1.1 加入依赖 <

    解决搜狗输入法快捷键冲突,让IDEA开发工具Ctrl + F功能恢复正常

    原因: 在使用IDEA开发工具时,我们经常会使用到Ctrl + F快捷键来进行文本查找。然而,有时候我们可能会遇到搜狗输入法快捷键与IDEACtrl + F功能冲突问题,导致无法正常使用查找

    Linux 快捷键教程:如何挂起正在编辑文件并在后台运行,再次调回前台继续编辑

    在 Linux 中如何将正在编辑文件挂起到后台并在后台运行,以便在编辑其他文件后返回并继续编辑? 在 Linux 中,您可以使用 "Ctrl + Z" 快捷键将当前正在运行进程(包括正在编辑

    送您一个最高2000元阿里云大礼包,快来领取吧~

    送您一个最高2000元阿里云大礼包,快来领取吧~ ----> 点击领取阿里云大礼包<----

    vagrant和vitrulbox创建好虚拟机如何访问外网和使用secureCRT或者xshell等工具连接 vagrant和vitrulbox创建好虚拟机如何访问外网和使用xshell或者

    vagrant和vitrulbox创建好虚拟机如何访问外网和使用xshell或者secureCRT等工具连接 1.使用vagrant和vitrulbox安装虚拟机 普通安装linux虚拟机太

    【扩展程序】释放AI力量:Monica探索顶级AI写作工具,创造出色内容

    扩展程序下载链接: https://cj.lskyf.com/ofpnmcalabcbjgholdjcjblkibolbppb.html 🔥你GPT-4 AI助手——ChatGPT插件。 作为你

    没有安全感是因为自己还不够强大

    人只有自己足够强大了,才会有安全感。自己强,比什么都强,你要知道,寻找一棵大树好乘凉,不如自栽自养。 没有安全感是因为自己还不够强大 最近发生了很多事情,让我一度很没有安全感,其中就是,前几天发生

    【扩展程序】 100套简历模板打包送你,有工作收藏!没工作用上!各行各业都可以用最漂亮简历打动HR,愿你有一个好工作。希望你有一份好薪水。

    ​ 前言 100套简历模板打包送你,有工作收藏!没工作用上!各行各业都可以用最漂亮简历打动HR,愿你有一个好工作。愿你有一份好薪水。愿你天黑有灯,下雨有伞! 下面看看有哪些简历 0001

    java高频面试题-Spring Boot自动配置是如何工作,以及它优点是什么?

    Spring Boot自动配置是其设计理念核心之一,它通过约定大于配置思想,为开发者提供了一种零配置开发体验。以下是对这个问题详细解答: 自动配置原理: Spring Boot通过

    Spring Boot系列2-全局统一异常处理

    原创: 天空和唯美 天空唯美  点击查看原文 为什么要全局统一异常处理呢?如果系统发生了异常,不做统一异常处理,前端会给用户展示一大片看不懂文字。做统一异常处理后当

    spring boot系列3-四步完成观察者事件发布接收(发送消息接收消息)使用异步方不阻塞主线程

    1.首先Application开启异步 @SpringBootApplication @EnableAsync public class DemoApplication { public

    Eclipse和IntelliJ IDEA 那个开发工具更好呢?

      Eclipse和IntelliJ IDEA 那个开发工具更能提高开发效率呢?现在好多人都趋向IntelliJ IDEA?如果让你选择,你会选择那个开发工具

    elasticsearch在不断重启造成cpu飙升

    有一天测试环境服务器卡要死 看看cup已经飙升到了190% 瞬间蒙圈了 我做了这些步骤发现是因为elasticsearch造成 1.通过top查询cpu占有率最高进程编号(pid) ps

    加入公众号
    加入公众号