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

最新文章

  1. java基础知识(三)java关键字
  2. 调用CachedRowSetImpl类时出现错误
  3. [转载]iOS Provisioning Profile(Certificate)与Code Signing详解
  4. 解读HTML 5新语法 提高语义价值
  5. 从零开始学习Node.js例子零 永远的Hello World
  6. java8 函数式编程
  7. Eclipse 分屏显示同一个文件
  8. Tensorflow学习笔记(一):MNIST机器学习入门
  9. Least Common Ancestors 分类: ACM TYPE 2014-10-19 11:24 84人阅读 评论(0) 收藏
  10. Spring碎点知识
  11. 有关windows在调试ODOO8.0有些问题
  12. LeetCode 66. Plus One(加1)
  13. 在页面加载前先出现加载loading,页面加载完成之后再显示页面
  14. 解决讨厌的警告 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
  15. C++ 抽象类与接口
  16. 『转』统计一个日志文件里,单词出现频率的shell脚本
  17. js 手机号码和电话号码正则校验
  18. Service Fabric Cluster Manager
  19. Google用不了解决方法(添加gmail用不了的方法)
  20. homebrew常见用法

热门文章

  1. js面对对象编程
  2. delete 和 truncate 的 区别
  3. MySQL删除相同前缀的表,修改某个库的存储引擎
  4. ABAP 面向对象(Object Orientation) OO
  5. 搜索ABAP程序代码中的字符串
  6. 阿里云修改centos7主机名
  7. hbase shell-general(常规指令)
  8. Docker 数据管理-三种数据mount方式
  9. bash rz 上传文件失败问题
  10. Smarty 的安装