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

[AIGC] CompletableFuture的重要方法有哪些?

CompletableFuture具有多种方法,使其成为异步编程的强大工具。在这里,我们将介绍一些最重要和常用的方法:

  1. CompletableFuture<T> supplyAsync(Supplier<T> supplier): 使用ForkJoinPool.commonPool()作为线程池来异步执行Suppiler参数的get方法,并返回CompletableFuture。

  2. CompletableFuture<T> supplyAsync(Supplier<T> supplier, Executor executor): 使用指定的thread pool来异步执行Supplier参数的get()方法,并返回CompletableFuture。

  3. CompletableFuture<Void> thenRun(Runnable action): 当CompletableFuture的计算结果完成,便会进行如下操作,该方法不关心计算的结果。

  4. CompletableFuture<Void> thenRunAsync(Runnable action): 当CompletableFuture的计算结果完成后异步进行如下操作,通过ForkJoinPool.commonPool()作为它的线程池执行后续的Runnable参数。

  5. CompletableFuture<Void> thenRunAsync(Runnable action, Executor executor): 当CompletionStage的计算结果完成后异步进行如下操作,使用指定的thread pool。

  6. CompletableFuture<T> thenApply(Function<? super T,? extends U> fn): 当CompletableFuture的计算结果完成后,该方法返回一个新的CompletableFuture,这个新的CompletableFuture会对结果进行函数的处理。

  7. CompletableFuture<T> thenCompose(Function<? super T,? extends CompletionStage<U>> fn): 同thenApply类似,不同在于其输入函数的返回是CompletionStage而非值,这样可以有效处理嵌套的异步操作。

  8. CompletableFuture<T> exceptionally(Function<Throwable, ? extends T> fn): 当原有的CompletableFuture产出异常时,调用function,输入异常,返回新的值。

这些方法只是CompletableFuture的一部分,它还有许多其他的方法,可以在CompletableFuture文档中查看。

相关文章:

  • Android - RadioGroup中多个radiobutton同时被选中问题
  • Vue3学习第二天记录
  • 服务部署:.NET项目使用Docker构建镜像与部署
  • TCP和udp能使用同一个端口通讯吗
  • IO-源码阅读 glibc 2.35
  • Web Dart前端:探索、挑战与未来展望
  • 针对多智能体协作框架的元编程——METAGPT
  • TCP/IP协议分析实验:通过一次下载任务抓包分析
  • 爬虫实现思路
  • 什么是Python?为什么它如此流行?
  • Activity->Activity中动态添加Fragment->add和replace方式添加的区别
  • 基于单片机的电子万年历设计
  • 11 gpio 与 pinctrl 子系统
  • TCP/IP协议介绍——三次握手四次挥手
  • C语言中指针的说明
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • java第三方包学习之lombok
  • Koa2 之文件上传下载
  • log4j2输出到kafka
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • Web设计流程优化:网页效果图设计新思路
  • 如何用vue打造一个移动端音乐播放器
  • 线上 python http server profile 实践
  • 最简单的无缝轮播
  • 树莓派用上kodexplorer也能玩成私有网盘
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #etcd#安装时出错
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (java)关于Thread的挂起和恢复
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (算法二)滑动窗口
  • (新)网络工程师考点串讲与真题详解
  • (一)基于IDEA的JAVA基础10
  • (原創) 物件導向與老子思想 (OO)
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转) 深度模型优化性能 调参
  • .apk文件,IIS不支持下载解决
  • .htaccess配置常用技巧
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .net core 6 redis操作类
  • .net MVC中使用angularJs刷新页面数据列表
  • .net 简单实现MD5
  • .Net环境下的缓存技术介绍
  • .NET下的多线程编程—1-线程机制概述
  • .NET中 MVC 工厂模式浅析
  • @vue/cli脚手架
  • [ 网络通信基础 ]——网络的传输介质(双绞线,光纤,标准,线序)
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [28期] lamp兄弟连28期学员手册,请大家务必看一下
  • [Android]使用Retrofit进行网络请求
  • [bzoj 3534][Sdoi2014] 重建