作家
登录

Java CompletableFuture详解

作者: 来源: 2017-12-22 09:13:58 阅读 我要评论

【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞?

thenAcceptBoth和runAfterBoth是当两个CompletableFuture都计算完成,而我们下面要懂得的办法是当随便率性一?CompletableFuture计算完成的时刻就会履行。


Java CompletableFuture详解

在Java 8中, 新增长了一个包含50个方办法右的类: CompletableFuture,默认依附fork/join框架启动新的线程实现异步与并发的,供给了异常强大年夜的Future的扩大功能,可以赞助我们简化异步编程的复杂性,供给了函数式编程的才能,可以经由过程回调的方法处理计算结不雅,并且供给了转换和组合CompletableFuture的办法。

CompletableFuture类实现了CompletionStage和Future接口,所以可以像以前一样经由过程壅塞或者轮询的方法获得结不雅,尽管这种方法不推荐应用。

创建CompletableFuture对象。

以下四个静态办法用来为一段异步履行的代码创建CompletableFuture对象:

  1. public static CompletableFuture<Void>              runAsync(Runnable runnable) 
  2.  
  3. public static CompletableFuture<Void>              runAsync(Runnable runnable, Executor executor) 
  4.  
  5. public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier) 
  6.  
  7. public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier, Executor executor) 

runAsync办法也好懂得,它以Runnable函数式接口类型为参数,所以CompletableFuture的计算结不雅为空。以Async结尾会应用其它的线程去履行,没有指定Executor的办法会应用ForkJoinPool.commonPool()作为它的线程池履行异步代码。

supplyAsync办法以Supplier<U>函数式接口类型为参数,CompletableFuture的计算结不雅类型为U。

  1. CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> { 
  2.  
  3.     return 100; 
  4.  
  5. }); 
  6.  
  7. CompletableFuture<Void> f =  future.thenRun(() -> System.out.println("finished")); 
  8.  
  9. System.out.println(f.get()); 

因为办法的参数类型都是函数式接口,所以可以应用lambda表达式实现异步义务,比如:

  1. CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> { 
  2.  
  3.     //长时光的计算义务 
  4.  
  5.     return "hello world"
  6.  
  7. }); 

计算结不雅完成时的处理

当CompletableFuture的计算结不雅完成,或者抛出异常的时刻,我们可以履行特定的Action。主如果下面的办法:

  1. public CompletableFuture<T>  whenComplete(BiConsumer<? super T,? super Throwable> action
  2.  
  3. public CompletableFuture<T>  whenCompleteAsync(BiConsumer<? super T,? super Throwable> action
     1/9    1 2 3 4 5 6 下一页 尾页

      推荐阅读

      iOS中触摸事件的传递和响应机制

    【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞?【编辑推荐】2017 Android和iOS几回再三被曝Bug,它们都怎么了?谷歌苹不雅竟齐翻车!谈谈安卓8/iOS11那些BugiOS消息转发>>>详细阅读


    本文标题:Java CompletableFuture详解

    地址:http://www.17bianji.com/lsqh/40058.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)