1: Fork/join

fork/join:  fork是分叉的意思, join是合并的意思。

Fork/Join框架:是JAVA7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。

Fokr/Join的适合场景:所处理的元素必须是独立的,数据集要足够大;

并且在并行加速方面,每个元素的处理成本要足够高,这样才能补偿建立fork/join框架所消耗的成本。

这个文章中的例子(http://www.infoq.com/cn/articles/Functional-Style-Callbacks-Using-CompletableFuture)很好的说明了 Future, ExecutorCompletionService,

CompletableFuture处理一个图片下载的例子时候的对比。

2: Future:

Future是Java 5添加的类,用来描述一个异步计算的结果,但是获取一个结果时方法较少,要么通过轮询isDone,确认完成后,调用get()获取值;

要么调用get()设置一个超时时间。但是这个get()方法会阻塞住调用线程,这种阻塞的方式显然和我们的异步编程的初衷相违背;

      Future本身并不能提供回调方法.  任务提交到executor,通过Future.isDone和阻塞的Future.get()来看结果是否完成。

3: ExecutorCompletionService

     把多个FutureTask提交到ExecutorCompletionService,task执行完的结果放到queue中,ExecutorCompletionService.get() 或者,poll()会从队列中依次取得

执行完的task, 再进行下一步处理。(这个方法比上面的方法好,上面只能是按照提交的顺序依次判断结果是否完成)

3: CompletableFuture

       它能够将回调放到与任务不同的线程中执行(thenApplyAsync),也能将回调作为继续执行的同步函数(thenApply),在与任务相同的线程中执行。

       它避免了传统回调最大的问题,那就是能够将控制流分离到不同的事件处理器中(thenApplyAsync()可以异步的在不同的线程中处理上一步结果)

4: CompletableFutre详解

待续... ...

5: java 8的 paralleStream 用 fork/join框架提供了并发执行能力。

待续... ...

6: 

https://www.cnblogs.com/tian666/p/7840232.html

九 fork/join CompletableFuture的更多相关文章

  1. JAVA中的Fork/Join框架

    看了下Java Tutorials中的fork/join章节,整理下. 什么是fork/join框架 fork/join框架是ExecutorService接口的一个实现,可以帮助开发人员充分利用多核 ...

  2. JAVA并行框架:Fork/Join

    一.背景 虽然目前处理器核心数已经发展到很大数目,但是按任务并发处理并不能完全充分的利用处理器资源,因为一般的应用程序没有那么多的并发处理任务.基于这种现状,考虑把一个任务拆分成多个单元,每个单元分别 ...

  3. 聊聊并发(八)——Fork/Join框架介绍

      作者 方腾飞 发布于 2013年12月23日 | 被首富的“一个亿”刷屏?不如定个小目标,先把握住QCon上海的优惠吧!2 讨论 分享到:微博微信FacebookTwitter有道云笔记邮件分享 ...

  4. fork/join使用示例

    fork/join框架是用多线程的方式实现分治法来解决问题.fork指的是将问题不断地缩小规模,join是指根据子问题的计算结果,得出更高层次的结果. fork/join框架的使用有一定的约束条件: ...

  5. Java Concurrency - Fork/Join Framework

    Normally, when you implement a simple, concurrent Java application, you implement some Runnable obje ...

  6. Java 7 Fork/Join 并行计算框架概览

    应用程序并行计算遇到的问题 当硬件处理能力不能按摩尔定律垂直发展的时候,选择了水平发展.多核处理器已广泛应用,未来处理器的核心数将进一步发布,甚至达到上百上千的数量.而现在 很多的应用程序在运行在多核 ...

  7. JDK7新特性之fork/join框架

    The fork/join framework is an implementation of the ExecutorService interface that helps you take ad ...

  8. Java并发——Fork/Join框架

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/ShiJiaqi. http://www.cnblogs.com/shijiaqi1066/p/4631466. ...

  9. 转:聊聊并发(八)——Fork/Join框架介绍

    1. 什么是Fork/Join框架 Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架. 我们再通过 ...

随机推荐

  1. Js格式化json字符串

    var formatJson = function(json, options) { var reg = null, formatted = '', pad = 0, PADDING = ' '; / ...

  2. linux c编程:Posix共享内存区

    Posix共享内存区:共享内存是最快的可用IPC形式.它允许多个不相关(无亲缘关系)的进程去访问同一部分逻辑内存.如果需要在两个进程之间传输数据,共享内存将是一种效率极高的解决方案.一旦这样的内存区映 ...

  3. nginx-gridfs的安装

    mongodb中gridfs适合存放视频和高清图片等等超大文件(小的文件建议不要存在mongodb中): 下面是在centos下配置nginx来訪问mongodb中的mp4文件: 1:安装nginx- ...

  4. 华为机试ACM(字符组合问题)

    今晚做了华为的机试,3道ACM题,最后一道是实现从M个不同字符中任取N个字符的所有组合. eg: input:ABC 2 output:AB AC BC 第一个输入为字符串,第二个输入为组合的字符个数 ...

  5. 【Prometheus】第三篇:配置alertmamager

    监控系统中非常重要的一环,就是告警,系统得在故障发生的第一时间将事件发送出来,通知干系人,prometheus提供了alertmanager来实现这个功能. 第一步:prometheus.yml配置文 ...

  6. C# 汉字编码GB2312转换

    功能界面 源码: using System; using System.Collections.Generic; using System.ComponentModel; using System.D ...

  7. maven导入项目时,缺少部分source folder

    今天导入公司的maven项目时,少了一些source folder,运行启动正常,但是页面打不开,找不到对应的目录文件,使用maven更新项目,重启编辑器也无效. 问题描述如图所示,缺少了图中的2个目 ...

  8. <开源项目分析>Cisco的开源视频加解码器THOR(H.264解码)

    原创博客,转载请联系博主! 题外话:自学了快两个月的Perl语言,本来打算写两篇基础介绍的博文来科普一下一些小技巧,但是仔细想想还是没有必要了吧,毕竟现在无论是在用Perl5还是Perl6的人都是小众 ...

  9. logstash的output插件

    logstash 的output插件 nginx,logstash和redis在同一台机子上 yum -y install redis,vim /etc/redis.conf 设置bind 0.0.0 ...

  10. Java -- 反射示例

    1. 反射: 即加载和解剖, 用于设计框架, 读取配置档 动态创建对象. Person类,用于反射. package com.kevin.class_test; public class Person ...