首页 > 其他分享 >[AIGC] CompletableFuture如何实现任务链式调用?

[AIGC] CompletableFuture如何实现任务链式调用?

时间:2024-05-25 22:04:38浏览次数:22  
标签:return 方法 AIGC 任务 future CompletableFuture 链式 supplyAsync

Java 中的 CompletableFuture 提供了多种方法来支持任务链式调用。这些方法允许你将一组操作链接在一起,形成一个任务链,每一个任务只有在上一个任务成功完成后才会被执行。现在,我们来看一下一些常用的链接任务的方法:

  1. thenApply():这个方法可以接收一个 Function 实例,用来处理上一个阶段计算后的结果,生成一个新的 CompletableFuture:
CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> {
    return 100;
});
CompletableFuture<String> future2 = future.thenApply(i -> i * 2).thenApply(i -> i.toString());
  1. thenAccept():这个方法和 thenApply() 很类似,但是不同的是,它的入参是一个 Consumer,它没有返回值:
CompletableFuture<Void> future = CompletableFuture.supplyAsync(() -> {
    return 100;
});
future.thenAccept(System.out::println);
  1. thenRun():这个方法既不需要上一阶段的结果,也没有返回值,它接收一个 Runnable 参数:
CompletableFuture<Void> future = CompletableFuture.supplyAsync(() -> {
    return 100;
});
future.thenRun(() -> System.out.println("Finished"));
  1. thenCompose():这个方法接收一个 Function,它的入参是上一阶段的结果,返回值必须是一个新的 CompletableFuture,用于链接两个 CompletableFuture:
CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> {
    return 100;
});
CompletableFuture<Integer> future2 = future.thenCompose(i -> CompletableFuture.supplyAsync(() -> i * 2));

以上方法都是异步的,也就是说,它们返回的 CompletableFuture 对象完成的时间不受代码顺序的约束。此外,所有这些方法都有一个"Async"的版本,比如 thenApplyAsync(),他们可以让后续的阶段异步的执行,也就是在新的线程里,更进一步提高程序的并发性能。

结合这些方法,我们可以创建出一连串的任务,每个任务都是在上一个任务完成之后开始,这就是 CompletableFuture 任务链的实现方式。

标签:return,方法,AIGC,任务,future,CompletableFuture,链式,supplyAsync
From: https://blog.csdn.net/qq_45704048/article/details/139204424

相关文章

  • [AIGC] 你能简要解释一下CompletableFuture中thenCompose()方法的用法吗?
    thenCompose()是CompletableFuture的一个方法,用于链接两个CompletableFuture对象。这可以用来促成函数式风格的编程,而无需再额外处理Future对象的嵌套。thenCompose()方法接受一个函数作为参数,这个函数的输入是先前CompletableFuture的结果,它返回的是一个新的Co......
  • AIGC落地培训行业最后一公里,有言AIGC视频生成产品赋能培训行业实现降本提效
    近年来,随着疫情之下外部环境骤变,市场竞争日益激烈。而在当下,如何让企业培训降本增效,最大化发挥价值成为培训人的共识。技术的进步,不仅仅是文生文、文生图的简单应用,文生视频工具的问世,解决了困扰培训行业多年的难题。而在当下,有言以AIGC视频生成产品赋能培训降本增效,已经广泛......
  • AIGC基础教学:AI+建筑设计,一场划时代变革的序幕已经拉开
    2015年9月,美的集团本着把艺术融入民间的理念,邀请了安藤忠雄设计正在筹建中的美术馆。在历经长达近120天的设计工作之后,美术馆于同年12月动工。这座具有岭南建筑文化意境的美术馆,后来荣获2020年美国建筑大师奖(ArchitectureMasterPrize)「2020年世界十大博物馆建筑」之一、......
  • 卷爆短剧出海:五大关键,由AIGC重构
    短剧高温下,谈谈AIGC的助攻路线。短剧,一个席卷全球的高温赛道。以往只是踏着霸总题材,如今,内容循着精品化、IP化的自然发展风向,给内容、制作、平台等产业全链都带来新机,也让短剧消费走向文化深处,触发更大的社会渲染力。从国内到全球,短剧行业亦然乘风。业内预测分......
  • 链式前向星+dijkstra
    #include<iostream>#include<vector>usingnamespacestd;constintN=1000;struct{intto;intw;intnext;}edge[N];inthead[N];voidadd_edge(intu,intv,intw){staticintcnt=0;edge[cnt].to=v;edge[cnt].w=......
  • CompletableFuture allOf 和 anyOf
    CompletableFuture<String>future1=CompletableFuture.supplyAsync(()->{List<String>objects=newArrayList<>();Strings=objects.get(0);return"成功";}).exceptionally(ex->{//这样的话future2就可以正常执行......
  • CompletableFuture学习
    CompleteFuture学习packagecom.example.CompleteFutureTest;importjava.util.concurrent.CompletableFuture;importjava.util.concurrent.ExecutionException;/***completeFuture用法*/publicclassTest{publicstaticvoidmain(String[]args)throwsI......
  • 链式前向星
    存边的结构,也是挺简单的,重点就三个数组h,ne,e和一个变量idxidx是index索引的缩写,这就是它的作用,索引。时间空间复杂度都是$O(n+m)$很不错h是存的表头,ne存的是下一个点的idx,e是当前点的序号,一般还有一个w存的是当前点的权值更详细一些h[a]表示a的表头,里面存储的是a所连向点b的......
  • CompletableFuture学习总结
    CompletableFuture简介在Java8中,CompletableFuture提供了非常强大的Future的扩展功能,可以帮助我们简化异步编程的复杂性,并且提供了函数式编程的能力,可以通过回调的方式处理计算结果,也提供了转换和组合CompletableFuture的方法。Java中的异步计算异步计算很难推理。通常,我们......
  • 10.5线性表的链式存储
    链表顺序表:缺点1、插入和删除操作移动大量元素。2、数组大小不好确定。3、占用空间。优点随机访问逻辑相邻物理位置上也相邻单链表(逻辑上相邻物理不相邻)链表定义:typedefintElemtype;structLNode{ Elemtypedata;//数据域 structLNode*next;//指针域};优点1......