等待所有任务执行完, 串行执行和异步执行的高级写法:

package com.zhangxueliang.demo.springbootdemo.JUC.c_026_01_ThreadPool;import java.util.Random;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;/*** @ProjectName springbootdemo_src* @ClassName T06_01_CompletableFuture* @Desicription TODO* @Author Zhang Xueliang* @Date 2019/12/5 16:13* @Version 1.0**/
public class T06_01_CompletableFuture {public static void main(String[] args) {long start,end;start=System.currentTimeMillis();/*priceOfJD();priceOfTB();priceOfTM();*/CompletableFuture<Double> priceOfTM = CompletableFuture.supplyAsync(() -> priceOfTM());CompletableFuture<Double> priceOfJD = CompletableFuture.supplyAsync(() -> priceOfJD());CompletableFuture<Double> priceOfTB = CompletableFuture.supplyAsync(() -> priceOfTB());CompletableFuture.allOf(priceOfJD,priceOfTB,priceOfTM).join();end=System.currentTimeMillis();System.out.println(end-start);}private static double priceOfTM() {delay();return 1.00;}private static double priceOfTB() {delay();return 2.00;}private static double priceOfJD() {delay();return 3.00;}private static void delay() {int time = new Random().nextInt(500);try {TimeUnit.MILLISECONDS.sleep(time);} catch (InterruptedException e) {e.printStackTrace();}System.out.printf("After %s sleep!\n", time);}}

Completable好玩的API:

package com.zhangxueliang.demo.springbootdemo.JUC.c_026_01_ThreadPool;import java.util.Random;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;/*** @ProjectName springbootdemo_src* @ClassName T06_01_CompletableFuture* @Desicription TODO* @Author Zhang Xueliang* @Date 2019/12/5 16:13* @Version 1.0**/
public class T06_01_CompletableFuture {public static void main(String[] args) {CompletableFuture.supplyAsync(()->priceOfJD()).thenApply(String::valueOf).thenApply(str->"price "+str).thenAccept(System.out::println);while (true){}}private static double priceOfTM() {delay();return 1.00;}private static double priceOfTB() {delay();return 2.00;}private static double priceOfJD() {delay();return 3.00;}private static void delay() {int time = new Random().nextInt(500);try {TimeUnit.MILLISECONDS.sleep(time);} catch (InterruptedException e) {e.printStackTrace();}System.out.printf("After %s sleep!\n", time);}}

CompletableFuture并行异步处理类使用示例相关推荐

  1. asp.net ajax聊天室,ASP.NET MVC4异步聊天室的示例代码

    本文介绍了ASP.NET MVC4异步聊天室的示例代码,分享给大家,具体如下: 类图: Domain层 IChatRoom.cs using System; using System.Collecti ...

  2. 深究并行编程Parallel类中的三大方法 (For、ForEach、Invoke)和几大编程模型(SPM、APM、EAP、TAP)

    一. 并行编程 1. 区分串行编程和串行编程 ①. 串行编程:所谓的串行编程就是单线程的作用下,按顺序执行.(典型代表for循环 下面例子从1-100按顺序执行) ②. 并行编程:充分利用多核cpu的 ...

  3. promise异步请求串行异步then并行异步all竞争异步race 传递参数resolve(then)reject(catch)

    1.印象 古人云:"君子一诺千金",这种"承诺将来会执行"的对象在JavaScript中称为Promise对象. Promise就是解决多个异步请求的问题 Pr ...

  4. php 异步处理类,php异步处理类

    该类可以请求HTTP和HTTPS协议,还可以处理301.302重定向以及GZIP压缩等. [PHP]代码 //使用方法 require('asynHandle.class.php'); $obj = ...

  5. (33)System Verilog类1调用类2示例

    (33)System Verilog类1调用类2示例 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog类1调用类2示例 5)结语 1.2 ...

  6. LLVM 核心类简明示例

    <带有LLVM的eBPF组件> <The LLVM Compiler Infrastructure | LLVM编译器基础设施> <LLVM每日谈 | 知乎> &l ...

  7. php解析命令行参数选项,PHP 命令行参数解析工具类的示例代码

    PHP 命令行参数解析工具类的示例代码 /** * 命令行参数解析工具类 * @author guolinchao */ class CommandLine { // 临时记录短选项的选项值 priv ...

  8. php云打印类,PHP应用:PHP云打印类完整示例

    <PHP应用:PHP云打印类完整示例>要点: 本文介绍了PHP应用:PHP云打印类完整示例,希望对您有用.如果有疑问,可以联系我们. 本文实例讲述了PHP云打印类.分享给大家供大家参考,具 ...

  9. 即时免费在线UML软件:超过30个类图示例

    什么是类图? 的UML 类图是用于构建和可视化的面向对象的系统的图形表示法.统一建模语言(UML)中的类图是一种静态结构图,通过显示系统来描述系统的结构: 类, 他们的属性(或属性), 操作(或方法) ...

最新文章

  1. 今晚8点直播 | 详解微软小冰全双工语音对话技术
  2. 企业级工作流解决方案(八)--微服务Tcp消息传输模型之服务端处理
  3. AndroidFFmpeg
  4. asp.net 访问 access出现 ole_connection.ServerVersion引发了System.InvalidOperationException的解决
  5. ML之xgboost:利用xgboost算法(sklearn+3Split+调参曲线+EarlyStop)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测)
  6. Redis 总结精讲 看一篇成高手系统 四
  7. SqlDataReader对象的NextResult方法读取存储过程多个结果集
  8. python中什么是数据驱动_Python数据驱动DDT的应用
  9. 漏桶算法与令牌桶算法
  10. 【转】WCF请求应答(Request-Reply)、单向操作(One-Way)、回调操作(Call Back)
  11. 内推 |阿里大文娱-数据分析(广州/北京)
  12. JVM调优--04---dump文件分析 、arthas在线排查工具
  13. 项目管理术语英汉对照表
  14. 彻底掌握NodeJS中如何使用Sequelize
  15. android 斜线 绘制_Android 自定义 斜线进度框 ,雨点式背景
  16. 19年程序员薪酬报告:平均年薪超70万,40岁后普遍遭遇收入天花板
  17. node.js清除缓存命令
  18. JavaScript——ES8新特性
  19. jupyter不是内部或外部命令,也不是可运行程序的解决方案
  20. jsp+servlet实现的简单登录验证

热门文章

  1. 【机器学习基础】(二):理解线性回归与梯度下降并做简单预测
  2. 【Python】嫦娥探月数据(PDS)处理与可视化
  3. 【Python基础】Python十大文件骚操作!!
  4. 【职场】公司利益和个人利益,永远不可能完全一致
  5. ECCV 2018 | OR-CNN行人检测:为‘遮挡’而生
  6. Spring源码-applicationcontext.xml解析过程
  7. 小程序完整对接 pingpp支付
  8. 分享让人折服的优秀代码基因
  9. 6.2、Android Studio内存
  10. Android Studio常见报错及处理办法