首页 > 其他分享 >CompletableFuture学习

CompletableFuture学习

时间:2024-05-14 13:52:23浏览次数:14  
标签:return res System 学习 CompletableFuture println out

CompleteFuture学习

package com.example.CompleteFutureTest;


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

/**
 * completeFuture用法
 */
public class Test {

    public static void main(String[] args) throws InterruptedException {
         
        //异步运行不带结果
        CompletableFuture<Void> cf0 = CompletableFuture.runAsync(()->{
            System.out.println("cf0运行结果: 你好"); 
        });  
      
        //异步运行带结果
        CompletableFuture<String> cf1 = CompletableFuture.supplyAsync(()->{
            return "cf1运行结果: 你好";
        });
        try {
            System.out.println(cf1.get());
        } catch (InterruptedException | ExecutionException e) {
            throw new RuntimeException(e);
        }

        CompletableFuture<String> cf2 = CompletableFuture.supplyAsync(()->{

            return "小猫";
        });

        CompletableFuture<String> cf3 = CompletableFuture.supplyAsync(()->{

            return "小狗";
        });

        /*
          thenCombine 将两个异步运行的结果进行后续处理
         */
        CompletableFuture<String> cf4 = cf3.thenCombine(cf2,(a,b)->{

            return a+","+b;
        });

        //all of 多个CompletableFuture并行运行,除此之外还有个any of
        CompletableFuture<Void> cf5 = CompletableFuture.allOf(cf3,cf4);

        Thread.sleep(3000L);
        /*
          thenApply和handle都是对结果进行处理 区别在于前面的执行出现异常,apply不会继续处理,而handle会
         */
        CompletableFuture<String> cf6 = cf4.thenApply(res->{
            return res+" ,该吃饭了";
        }).thenApply(f->{
            return f+",再不吃饭就挨打";
        }).whenComplete((res,e)->{
            //不用get是因为get搞不好会阻塞
            System.out.println("结果: "+res);
            System.out.println("报错异常: "+e);
        }).exceptionally(e->{
          //异常处理 报异常才来到这里
            e.printStackTrace();
            System.out.println("出现异常,处理");
            return null;
        });


    }

}

标签:return,res,System,学习,CompletableFuture,println,out
From: https://www.cnblogs.com/LIang2003/p/18191164

相关文章

  • 机器学习实践第四篇——贝叶斯分类器
    一.什么是贝叶斯分类器  1.1贝叶斯定理  贝叶斯定理是贝叶斯统计学中的核心定理,它描述了在获得新的观察数据后如何更新概率估计。贝叶斯定理的数学表达如下:  $$P(A|B)=\frac{P(B|A)\cdotP(A)}{P(B)}$$  其中,$P(A|B)$表示在给定观察数据$B$的条件下,事件$A$发......
  • Vue学习知识汇总
    官网:https://cn.vuejs.org/前置知识:完整的学习vue:html+css、JavaScript、css3、HTML5、第三方库、网络通信、ES6+、webpack、模块化、包管理器、css预编译器体验vue功能:html+css、JavaScriptVue拥有以下特点:渐进式组件化响应式Vue的应用场景:前台的部分页面......
  • 树链剖分 学习笔记
    树链剖分学习笔记时更。还没开始学,放个板子先。板子#include<bits/stdc++.h>#definefo(x,y,z)for(int(x)=(y);(x)<=(z);(x)++)#definefu(x,y,z)for(int(x)=(y);(x)>=(z);(x)--)typedeflonglongll;inlineintqr(){ charch=getchar();intx=0,f=1; for(;ch......
  • pytest 学习 - 03 fixture
    前言有的场景setup与teardown无法满足,如:有的用例需要登录才能执行,有的用例不需要登录。fixturefixture可以满足以上特殊的场景。1.只有登录的函数上面加上 @pytest.fixture()2. 在要使用的测试方法中传入(登录函数名称),就先登录案例[email protected]()def......
  • redis学习笔记3: redis常用命令
    redis学习笔记3:redis常用命令在此处输入redis命令字符串操作命令setkeyvalue设置指定key的值(类似于put)getkey获取指定key的值setexkeysecondsvalue设置带有过期时间的keysetnxkey......
  • redis学习笔记4: 在Java中操作Redis
    redis学习笔记4:在Java中操作RedisRedis的Java客户端Jedis[命令和原生Redis基本相同]Lettuce[性能高效]SpringDateRedis[可以在Spring项目中使用,简化操作]SpringDateRedis使用方式导入maven坐标<!--https://mvnrepository.com/artifact/org.springfra......
  • 机器学习策略篇:详解为什么是人的表现?(Why human-level performance?)
    为什么是人的表现?在过去的几年里,更多的机器学习团队一直在讨论如何比较机器学习系统和人类的表现,为什么呢?认为有两个主要原因,首先是因为深度学习系统的进步,机器学习算法突然变得更好了。在许多机器学习的应用领域已经开始见到算法已经可以威胁到人类的表现了。其次,事实证明,当试......
  • 【SpringCloud】黑马学习笔记-Nacos
    #1.Nacos安装(黑马教程安装材料)##1.1Windows安装开发阶段采用单机安装即可。###1.1.1下载安装包在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务端或者源代码:GitHub主页:https://github.com/alibaba/nacosGitHub的Release下载页:https://github.com/alibaba/na......
  • Vue模板语法、属性绑定、条件渲染的学习
    Vue模板语法:使用插值表达式的内容必须是有结果的内容才可以,就是需要return出来的才可以显示出来。插值表达式所表现的内容为纯文本模式如何避免即所有的逻辑操作都在js里面实现,不要再templete中实现可以完美的避免这个问题。Vue属性绑定1.使用v-bind进行属性绑定语法:v-b......
  • win32下汇编代码结构学习
    通常win32下三种不同的调用模式,不同版本的编译器,对汇编出来的代码都会代理一些差别。__cdecl是默认的方式,采用外平栈。__stdcall,采用内平栈。__fastcall,因为采用2个寄存器传参,所以多于2个参数后也会用外平栈的方式。传入的第一个参数位置在ebp+8,后面依次加4个字节,即第n个参数的......