CompletableFuture并行异步处理类使用示例
等待所有任务执行完, 串行执行和异步执行的高级写法:
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并行异步处理类使用示例相关推荐
- asp.net ajax聊天室,ASP.NET MVC4异步聊天室的示例代码
本文介绍了ASP.NET MVC4异步聊天室的示例代码,分享给大家,具体如下: 类图: Domain层 IChatRoom.cs using System; using System.Collecti ...
- 深究并行编程Parallel类中的三大方法 (For、ForEach、Invoke)和几大编程模型(SPM、APM、EAP、TAP)
一. 并行编程 1. 区分串行编程和串行编程 ①. 串行编程:所谓的串行编程就是单线程的作用下,按顺序执行.(典型代表for循环 下面例子从1-100按顺序执行) ②. 并行编程:充分利用多核cpu的 ...
- promise异步请求串行异步then并行异步all竞争异步race 传递参数resolve(then)reject(catch)
1.印象 古人云:"君子一诺千金",这种"承诺将来会执行"的对象在JavaScript中称为Promise对象. Promise就是解决多个异步请求的问题 Pr ...
- php 异步处理类,php异步处理类
该类可以请求HTTP和HTTPS协议,还可以处理301.302重定向以及GZIP压缩等. [PHP]代码 //使用方法 require('asynHandle.class.php'); $obj = ...
- (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 ...
- LLVM 核心类简明示例
<带有LLVM的eBPF组件> <The LLVM Compiler Infrastructure | LLVM编译器基础设施> <LLVM每日谈 | 知乎> &l ...
- php解析命令行参数选项,PHP 命令行参数解析工具类的示例代码
PHP 命令行参数解析工具类的示例代码 /** * 命令行参数解析工具类 * @author guolinchao */ class CommandLine { // 临时记录短选项的选项值 priv ...
- php云打印类,PHP应用:PHP云打印类完整示例
<PHP应用:PHP云打印类完整示例>要点: 本文介绍了PHP应用:PHP云打印类完整示例,希望对您有用.如果有疑问,可以联系我们. 本文实例讲述了PHP云打印类.分享给大家供大家参考,具 ...
- 即时免费在线UML软件:超过30个类图示例
什么是类图? 的UML 类图是用于构建和可视化的面向对象的系统的图形表示法.统一建模语言(UML)中的类图是一种静态结构图,通过显示系统来描述系统的结构: 类, 他们的属性(或属性), 操作(或方法) ...
最新文章
- 今晚8点直播 | 详解微软小冰全双工语音对话技术
- 企业级工作流解决方案(八)--微服务Tcp消息传输模型之服务端处理
- AndroidFFmpeg
- asp.net 访问 access出现 ole_connection.ServerVersion引发了System.InvalidOperationException的解决
- ML之xgboost:利用xgboost算法(sklearn+3Split+调参曲线+EarlyStop)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测)
- Redis 总结精讲 看一篇成高手系统 四
- SqlDataReader对象的NextResult方法读取存储过程多个结果集
- python中什么是数据驱动_Python数据驱动DDT的应用
- 漏桶算法与令牌桶算法
- 【转】WCF请求应答(Request-Reply)、单向操作(One-Way)、回调操作(Call Back)
- 内推 |阿里大文娱-数据分析(广州/北京)
- JVM调优--04---dump文件分析 、arthas在线排查工具
- 项目管理术语英汉对照表
- 彻底掌握NodeJS中如何使用Sequelize
- android 斜线 绘制_Android 自定义 斜线进度框 ,雨点式背景
- 19年程序员薪酬报告:平均年薪超70万,40岁后普遍遭遇收入天花板
- node.js清除缓存命令
- JavaScript——ES8新特性
- jupyter不是内部或外部命令,也不是可运行程序的解决方案
- jsp+servlet实现的简单登录验证
热门文章
- 【机器学习基础】(二):理解线性回归与梯度下降并做简单预测
- 【Python】嫦娥探月数据(PDS)处理与可视化
- 【Python基础】Python十大文件骚操作!!
- 【职场】公司利益和个人利益,永远不可能完全一致
- ECCV 2018 | OR-CNN行人检测:为‘遮挡’而生
- Spring源码-applicationcontext.xml解析过程
- 小程序完整对接 pingpp支付
- 分享让人折服的优秀代码基因
- 6.2、Android Studio内存
- Android Studio常见报错及处理办法