本文导读: 业务需求场景介绍 技术设计方案思考 Future 设计模式实战 CompletableFuture 模式实战 CompletableFuture 生产建议 CompletableFuture 性能测试 CompletableFuture 使用扩展 1、业务需求场景介绍 不变的东西就是一直 ...
分类:
其他好文 时间:
2019-10-06 14:59:47
阅读次数:
90
一、CompletableFuture用法入门介绍 入门介绍的一个例子: console打印: 二、 ...
分类:
其他好文 时间:
2019-09-30 23:51:59
阅读次数:
97
假如我有一个订单相关的统计接口,需要返回3样数据:今日订单数、今日交易额、总交易额。 一般的我们的做法是串行调用3个函数,把调用返回的结果返回给调用者,这3次调用时串行执行的,如果每个调用耗时1秒的话,3次调用总耗时就是3秒。 这种做法效率非常低,因为3次调用之间无所谓先后顺序,所以采用并行执行效率 ...
分类:
其他好文 时间:
2019-09-15 11:32:46
阅读次数:
899
先说场景: 根据Redis官网介绍,单机版Redis的读写性能是12万/秒,批量处理可以达到70万/秒。不管是缓存或者是数据库,都有批量处理的功能。当我们的系统达到瓶颈的时候,我们考虑充分的压榨缓存和数据库的性能,应对更大的并发请求。适用于电商促销双十一,等特定高并发的场景,让系统可以支撑更高的并发 ...
分类:
其他好文 时间:
2019-08-04 16:40:09
阅读次数:
96
一、创建线程 二、Future jdk8之前的实现方式,在JUC下增加了Future,从字面意思理解就是未来的意思,但使用起来却着实有点鸡肋,并不能实现真正意义上的异步,获取结果时需要阻塞线程,或者不断轮询。 三、CompletableFuture 使用原生的CompletableFuture实现异 ...
分类:
编程语言 时间:
2019-07-13 19:58:14
阅读次数:
131
什么是Future 接口 很多场景下,我们想去获取线程运行的结果,而通常使用execute方法去提交任务是无法获得结果的,这时候我们常常会改用submit方法去提交,以便获得线程运行的结果。 而submit方法返回的就是Future,一个未来对象。 使用future.get() 方法去获取线程执行结 ...
分类:
编程语言 时间:
2019-05-27 13:33:25
阅读次数:
108
测试工具启动会递归的方式进行子进程的消息获取,目前有2种常用的ExecutorService / ForkJoinPool 为了测试哪种效果较好,我们来写个测试Demo,1到5555555,每次+1,统计每种执行完后耗时和GC数据 CompletableFuture.runAsync(() -> T ...
分类:
编程语言 时间:
2019-03-04 09:57:00
阅读次数:
314
首先是https://www.jianshu.com/p/4897ccdcb278这个帖子,代码差不多贴了跑了,主要是completableFuture的一些方法的用法 然后是来自https://www.cnblogs.com/cjsblog/p/9267163.html的帖子 https://ww ...
分类:
其他好文 时间:
2018-11-23 18:34:40
阅读次数:
176
一般而言,es返回数据的上限是10000条,如果超过这个数量,就必须使用scroll查询。 所谓scroll查询就类似DBMS中的游标,或者快照吧,利用查询条件,在第一次查询时,在所有的结果上形成了一个快照,然后再分批分次的读取出来。 要完成一个scroll查询分两个阶段: 阶段一:带查询参数 这个 ...
分类:
其他好文 时间:
2018-11-14 21:04:35
阅读次数:
265
java并发编程降低延迟 在平时开发的过程中,其实有很多可以采用多线程优化的地方,像ExecutorService、CompletionService、CompletableFuture和并行流等类,只是没有去注意,这里总结下日常工作中常用的一些方法。 [TOC] 一、ExecutorService ...
分类:
编程语言 时间:
2018-11-09 00:46:05
阅读次数:
311