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

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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值