java jdk7 并行计算框架 fork/join
2016-04-26 07:15
453 查看
原文地址 :
http://www.iteye.com/topic/643724 //简单的例子
http://www.infoq.com/cn/articles/fork-join-introduction/ //对源码简要的分析。。
其中还涉及到 工作窃取算法 :
假如我们需要做一个比较大的任务,我们可以把这个任务分割为若干互不依赖的子任务,为了减少线程间的竞争,于是把这些子任务分别放到不同的队列里,并为每个队列创建一个单独的线程来执行队列里的任务,线程和队列一一对应,比如A线程负责处理A队列里的任务。但是有的线程会先把自己队列里的任务干完,而其他线程对应的队列里还有任务等待处理。干完活的线程与其等着,不如去帮其他线程干活,于是它就去其他线程的队列里窃取一个任务来执行。而在这时它们会访问同一个队列,所以为了减少窃取任务线程和被窃取任务线程之间的竞争,通常会使用双端队列,被窃取任务线程永远从双端队列的头部拿任务执行,而窃取任务的线程永远从双端队列的尾部拿任务执行。
http://www.iteye.com/topic/643724 //简单的例子
http://www.infoq.com/cn/articles/fork-join-introduction/ //对源码简要的分析。。
其中还涉及到 工作窃取算法 :
假如我们需要做一个比较大的任务,我们可以把这个任务分割为若干互不依赖的子任务,为了减少线程间的竞争,于是把这些子任务分别放到不同的队列里,并为每个队列创建一个单独的线程来执行队列里的任务,线程和队列一一对应,比如A线程负责处理A队列里的任务。但是有的线程会先把自己队列里的任务干完,而其他线程对应的队列里还有任务等待处理。干完活的线程与其等着,不如去帮其他线程干活,于是它就去其他线程的队列里窃取一个任务来执行。而在这时它们会访问同一个队列,所以为了减少窃取任务线程和被窃取任务线程之间的竞争,通常会使用双端队列,被窃取任务线程永远从双端队列的头部拿任务执行,而窃取任务的线程永远从双端队列的尾部拿任务执行。
相关文章推荐
- Java简介
- package和import
- 闲谈
- Spring Data Jpa 查询返回自定义对象
- 多态、抽象类、接口、区别(java基础知识九)
- 我对java的理解(一)——注解就是贴标签
- Java---IO加强(2)
- Java---IO加强(2)
- 重新学javaweb---cookie&&session
- springmvc图片上传遇到的问题(除了图片还要传文字)乱码参数取不到
- 20145333《Java程序设计》第3次实验报告
- 停止Java线程,小心interrupt()方法
- 在java web项目中集成webservice
- 了解 Spring Data JPA
- JAVA多线程实现的三种方式
- JavaWeb自定义标签
- Java Basis
- java:main class not find:Unsupported major.minor version 51.0
- java:main class not find:Unsupported major.minor version 51.0
- Java运用echart进行图形展示