Java CompletableFuture组合拼装异步线程任务(2)
Java CompletableFuture组合拼装异步线程任务
private void seq() throws ExecutionException, InterruptedException { System.out.println("时间1:" + System.currentTimeMillis()); CompletableFuture<String> f1 = CompletableFuture.supplyAsync(new Supplier<String>() { @Override public String get() { try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) { e.printStackTrace(); } return "2018"; } }); System.out.println("时间2:" + System.currentTimeMillis()); CompletableFuture<Integer> f2 = f1.thenApply(new Function<String, Integer>() { @Override public Integer apply(String s) { try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) { e.printStackTrace(); } return Integer.parseInt(s); } }); System.out.println("时间3:" + System.currentTimeMillis()); CompletableFuture<Double> f3 = f2.thenApply(new Function<Integer, Double>() { @Override public Double apply(Integer i) { try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) { e.printStackTrace(); } return (double) i; } }); System.out.println("时间4:" + System.currentTimeMillis()); f3.whenComplete((v, a) -> { System.out.println("v: " + v); System.out.println("a: " + a); }); System.out.println("时间5:" + System.currentTimeMillis()); System.out.println(f3.get()); System.out.println("时间6:" + System.currentTimeMillis()); }
输出结果:
06-12 18:49:08.337 6047-6047/zhangphil.test I/System.out: 时间1:1528800548337 06-12 18:49:08.339 6047-6047/zhangphil.test I/System.out: 时间2:1528800548339 06-12 18:49:08.340 6047-6047/zhangphil.test I/System.out: 时间3:1528800548340 06-12 18:49:08.341 6047-6047/zhangphil.test I/System.out: 时间4:1528800548341 06-12 18:49:08.342 6047-6047/zhangphil.test I/System.out: 时间5:1528800548342 06-12 18:49:17.347 6047-6089/zhangphil.test I/System.out: v: 2018.0 a: null 06-12 18:49:17.347 6047-6047/zhangphil.test I/System.out: 2018.0 06-12 18:49:17.348 6047-6047/zhangphil.test I/System.out: 时间6:1528800557348

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java-递归概念与实战
本文主要介绍的递归算法。 首先我们看下百度百科对递归的基本概念:程序调用自身的编程技巧称为 递归( recursion)。递归做为一种算法在程序设计语言中广泛应用(也就是说递归不仅仅只是针对Java)。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。 构成递归需具备的条件: 1:子问题须与原始问题为同样的事,且更为简单(简单点理解类似 累加或者累乘) 2:不能无限制地调用本身,须有个出口,化简为非递归状况处理。(也就是需要将结果返回出去,无限的自己调用自己没有意义,因为算法的本质是为了提高效率)。 以上资料来自于百度百科,我想这段文字很好的说明了递归算法的作用以及意义。递归,简单来说就是方法自己调用自己。为了更深入的理解,下面使用几个小片段来说明下。 ...
- 下一篇
Java CompletableFuture:thenCompose (3)
Java CompletableFuture:thenCompose (3) private void seq() throws ExecutionException, InterruptedException { CompletableFuture<String> f1 = CompletableFuture.supplyAsync(new Supplier<String>() { @Override public String get() { try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) { e.printStackTrace(); } return "2018"; } }); CompletableFuture<Integer> f2 = f1.thenCompose(new Function<String, CompletableFuture<Integer>>() { @Override public CompletableFutu...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Mario游戏-低调大师作品
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS关闭SELinux安全模块