首页 > 编程语言 >JUC并发编程 CompletableFuture 获得结果和触发计算 常用方法(二)

JUC并发编程 CompletableFuture 获得结果和触发计算 常用方法(二)

时间:2024-01-14 15:59:57浏览次数:30  
标签:JUC get 编程 completableFuture TimeUnit CompletableFuture public sleep

1 获得结果和触发计算

1.1 获取结果

  • public T get()
    
  • public T get(long timeout,TimeUnit unit)
    
  • public T join() --->和get一样的作用,只是不需要抛出异常
    
  • public T getNow(T valuelfAbsent) --->计算完成就返回正常值,否则返回备胎值(传入的参数),立即获取结果不阻塞
    

1.2 主动触发计算

  • public boolean complete(T value) ---->是否打断线程方法立即返回括号值
    

1.3 案例实操

前面文章已经介绍过get() 和 get(long timeout,TimeUnit unit) 使用方法了,这里就直接略过。

1.3.1 join()

和get一样的作用,只是不需要抛出异常

    public static void main(String[] args) {
        
        CompletableFuture<String> completableFuture = CompletableFuture.supplyAsync(() -> {
            
            try {
                TimeUnit.SECONDS.sleep(1);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return "abc";
        });
        System.out.println(completableFuture.get());

        System.out.println(completableFuture.join());

    }

1.3.2 getNow(T valuelfAbsent)

    public static void main(String[] args) {
        
        CompletableFuture<String> completableFuture = CompletableFuture.supplyAsync(() -> {
            
            try {
                TimeUnit.SECONDS.sleep(3);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return "abc";
        });

        
        try {
            TimeUnit.SECONDS.sleep(2);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        /**
         * 如果CompletableFuture线程没有计算的时间 小于 主线程  那么 结果是 XXXX
         * 反之 则是 CompletableFuture 线程的计算结果
         */
        System.out.println(completableFuture.getNow("xxxx"));
 

        
        
    }

1.3.3 public boolean complete(T value)

是否打断线程方法立即返回括号值

 public static void main(String[] args) {
        
        CompletableFuture<String> completableFuture = CompletableFuture.supplyAsync(() -> {
            
            try {
                TimeUnit.SECONDS.sleep(3);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return "abc";
        });


        try {
            TimeUnit.SECONDS.sleep(2);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(completableFuture.complete("completevalue")+"\t"+completableFuture.join());
        
        
    }

标签:JUC,get,编程,completableFuture,TimeUnit,CompletableFuture,public,sleep
From: https://www.cnblogs.com/mangoubiubiu/p/17963779

相关文章

  • JUC并发编程 CompletableFuture 业务代码实战
    1需求电商网站比价需求分析:1.1需求说明:a.同一款产品,同时搜索出同款产品在各大电商平台的售价b.同一款产品,同时搜索出本产品在同一个电商平台下,各个入驻卖家售价是多少1.2输出返回:a.出来结果希望是同款产品的在不同地方的价格清单列表,返回一个List例如:《Mysql》......
  • JUC并发编程 用CompletableFuture 创建异步任务
    1CompletableFuture对Future的改进1.1CompletableFuture为什么会出现get()方法在Future计算完成之前会一直处在阻塞状态下,阻塞的方式和异步编程的设计理念相违背。isDene()方法容易耗费cpu资源(cpu空转),对于真正的异步处理我们希望是可以通过传入回调函数,在Future结束时自动......
  • JUC 异步编程利器 CompletableFuture 介绍
    1从FutureTask到CompletableFuture1.1FutureFuture接口(FutureTask实现类)定义了操作异步任务执行一些方法,如获取异步任务的执行结果、取消异步任务的执行、判断任务是否被取消、判断任务执行是否完毕等。举例:比如主线程让一个子线程去执行任务,子线程可能比较耗时,启动子线程开......
  • Java多线程编程实战指南(设计模式篇)PDF
    随着CPU多核时代的到来,多线程编程在充分利用计算资源、提高软件服务质量方面扮演了越来越重要的角色。而解决多线程编程中频繁出现的普遍问题可以借鉴设计模式所提供的现成解决方案。然而,多线程编程相关的设计模式书籍多采用C++作为描述语言,且书中所举的例子多与应用开发人员的......
  • Java多线程编程实战指南(核心篇)PDF
    随着现代处理器的生产工艺从提升处理器主频频率转向多核化,即在一块芯片上集成多个处理器内核(Core),多核处理器(MulticoreProcessor)离我们越来越近了——如今就连智能手机这样的消费类设备都已配备了4核乃至8核的处理器,更何况商用系统!在此背景下,以往靠单个处理器自身处理能力的提升......
  • Java多线程编程实战指南(核心篇)PDF
    随着现代处理器的生产工艺从提升处理器主频频率转向多核化,即在一块芯片上集成多个处理器内核(Core),多核处理器(MulticoreProcessor)离我们越来越近了——如今就连智能手机这样的消费类设备都已配备了4核乃至8核的处理器,更何况商用系统!在此背景下,以往靠单个处理器自身处理能力的提升所......
  • Scala编程语言day1
    一、Scala概述Scala是一种运行在JVM上的函数式的面向对象语言,它集成了面向对象编程和面向函数式编程的各种特性,以及更高层的并发模型Scala的语言特点Scala是兼容的:兼容Java,可以访问庞大的Java类库Scala是精简的:Scala表达能力强,开发速度快Scala是高级的:Scala可以让你的程序保......
  • 【教3妹学编程-算法题】构造限制重复的字符串
    3妹:“太阳当空照,花儿对我笑,小鸟说早早早,你为什么背上炸药包”2哥:3妹,什么事呀这么开森。3妹:2哥你看今天的天气多好啊,最近一周都是大晴天,艳阳高照2哥:是啊,天气不冷不热的,很适合生活3妹:据说南方的小土豆都跑到北方滑雪了,哈哈哈哈2哥:泼水成冰好玩是好玩,但是一定要注意防寒哦,看新闻都有......
  • 《Java编程思想第四版》学习笔记54--关于UncaughtExceptionHandler
    Java中在处理异常的时候,通常的做法是使用try-catch-finally来包含代码块,但是Java自身还有一种方式可以处理——使用UncaughtExceptionHandler。它能检测出某个线程由于未捕获的异常而终结的情况。当一个线程由于未捕获异常而退出时,JVM会把这个事件报告给应用程序提供的UncaughtExce......
  • 学了这么多编程语言,你学会了几种“Hello world”呢?
    学了这么多编程语言,你学会了几种“Helloworld”呢?王菜鸟于2020-05-0921:53:48发布阅读量2.1k收藏2点赞数15分类专栏:随笔记录文章标签:编程语言版权随笔记录专栏收录该内容31篇文章2订阅订阅专栏你知道多少种编程语言?本文整理了30种编程语言的HelloWorld程序,有些......