ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java学习(十五)-异步线程CompletableFuture

2021-11-23 13:35:14  阅读:106  来源: 互联网

标签:CompletableFuture Java 异步 线程 static 异常 public


1、Future模式

Future模式是多线程开发中非常常见的一种设计模式。它的核心思想是异步调用。当我们需要调用一个函数方法时。如果这个函数执行很慢,那么我们就要进行等待。但有时候,我们可能并不急着要结果。因此,我们可以让被调用者立即返回,让他在后台慢慢处理这个请求。对于调用者来说,则可以先处理一些其他任务,在真正需要数据的场合再去尝试获取需要的数据。

2、CompletableFuture详解
2.1、创建CompletableFuture对象
1 public static CompletableFuture<Void>   runAsync(Runnable runnable)
2 public static CompletableFuture<Void>   runAsync(Runnable runnable, Executor executor)
3 public static <U> CompletableFuture<U>  supplyAsync(Supplier<U> supplier)
4 public static <U> CompletableFuture<U>  supplyAsync(Supplier<U> supplier, Executor executor)
  • Asynsc表示异步,而supplyAsync与runAsync不同在与前者异步返回一个结果,后者是void
  • 第二个函数第二个参数表示是用我们自己创建的线程池,否则采用默认的ForkJoinPool.commonPool()作为它的线程池.
  • Supplier是一个函数式接口,代表是一个生成者的意思,传入0个参数,返回一个结果
2.2、获取异步线程返回值的两种方式:join和get方法**
  • join()方法抛出的是uncheck异常(即未经检查的异常),不会强制开发者抛出,会将异常包装成CompletionException异常 /CancellationException异常,但是本质原因还是代码内存在的真正的异常
  • get()方法抛出的是经过检查的异常,ExecutionException, InterruptedException 需要用户手动处理(抛出或者 try catch)

标签:CompletableFuture,Java,异步,线程,static,异常,public
来源: https://blog.csdn.net/qianwenjun_19930314/article/details/121477725

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有