作家
登录

Java CompletableFuture详解

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

  •             System.out.println(v); 
  •  
  •             System.out.println(e); 
  •  
  •         }); 
  •  
  •         System.out.println(f.get()); 
  •  
  •         System.in.read(); 
  •  
  •     } 
  •  
  • exceptionally办法返回一个新的CompletableFuture,当原始的CompletableFuture抛出异常的时刻,就会触发这个CompletableFuture的计算,调用function计算值,不然如不雅原始的CompletableFuture正常计算完后,这个新的CompletableFuture也计算完成,它的值和原始的CompletableFuture的计算的值雷同。也就是这个exceptionally办法用来处理异常的情况。

    结不雅转换

    因为回调风格的实现,我们不必因为等待一个计算完成而壅塞着调用线程,而是告诉CompletableFuture当计算完成的时刻请履行某个function。并且我们还可以将这些操作串联起来,或者将CompletableFuture组合起来。

    1. public <U> CompletableFuture<U>  thenApply(Function<? super T,? extends U> fn) 
    2.  
    3. public <U> CompletableFuture<U>  thenApplyAsync(Function<? super T,? extends U> fn) 
    4.  
    5. public <U> CompletableFuture<U>  thenApplyAsync(Function<? super T,? extends U> fn, Executor executor) 

    这一组函数的功能是当本来的CompletableFuture计算完后,将结不雅传递给函数fn,将fn的结不雅作为新的CompletableFuture计算结不雅。是以它的功能相当于将CompletableFuture<T>转换成CompletableFuture<U>。

    1. CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> { 
    2.  
    3.     return 100; 
    4.  
    5. }); 
    6.  
    7. CompletableFuture<String> f =  future.thenApplyAsync(i -> i * 10).thenApply(i -> i.toString()); 
    8.  
    9. System.out.println(f.get()); //"1000" 

    须要留意的是,这些转换并不是立时履行的,也不会壅塞,而是在前一个stage完成后持续履行。

    下面一组办法固然也返回CompletableFuture对象,然则对象的值和本来的CompletableFuture计算的值不合。当本来的CompletableFuture的值计算完成或者抛出异常的时刻,会触发这个CompletableFuture对象的计算,结不雅由BiFunction参数计算而得。是以这组办法兼有whenComplete和转换的两个功能。

    1. public <U> CompletableFuture<U>     handle(BiFunction<? super T,Throwable,? extends U> fn) 
    2.  
    3. public <U> CompletableFuture<U>     handleAsync(BiFunction<? super T,Throwable,? extends U> fn) 
    4.  
    5. public <U> CompletableFuture<U>     handleAsync(BiFunction<? super T,Throwable,? extends U> fn, Executor executor) 

    帮助办法 allOf 和 anyOf


      推荐阅读

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

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


    本文标题:Java CompletableFuture详解

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

    关键词: 探索发现

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

    网友点评
    自媒体专栏

    评论

    热度

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