jdk7 并行计算框架Fork/Join
故名思义,拆分fork+合并join。jdk1.7整合Fork/Join,性能上有大大提升。
思想:充分利用多核CPU把计算拆分成多个子任务,并行计算,提高CPU利用率大大减少运算时间。有点像,MapReduce思路感觉大致一样。
jdk7中已经提供了最简洁的接口,让你不需要太多时间关心并行时线程的通信,死锁问题,线程同步,下面是它提供的接口:
aaarticlea/png;base64,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" alt="" />
简单示例:
package tank.forjoin.demo; import java.util.concurrent.RecursiveTask; /**
* @author tank
* @date:2014-8-27 下午01:30:06
* @description:
* @version :任务
* futrue:
* forkjoinTask:recursiveTask recursiveAction
*/
public class Demo1 extends RecursiveTask<Integer> {
private int start;
private int end; public Demo1(int start, int end) {
this.start = start;
this.end = end;
} //计算
@Override
protected Integer compute() {
int sum = 0;
if (start - end < 100) {
for (int i = start; i < end; i++) {
sum += i;
}
} else {//间隔有100则拆分多个任务计算
int middle = (start + end) / 2;
Demo1 left = new Demo1(start, middle);
Demo1 right = new Demo1(middle + 1, end);
left.fork();
right.fork(); sum = left.join() + right.join();
}
return sum;
}
}
package tank.forjoin.demo; import java.util.concurrent.ExecutionException;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.Future; import org.junit.Test; /**
* @author tank
* @date:2014-8-27 下午01:50:20
* @description:
* @version :
*/
public class TestDemo1 {
@Test
public void testDemo1() throws InterruptedException, ExecutionException {
ForkJoinPool forkJoinPool = new ForkJoinPool();//对线程池的扩展
Future<Integer> result = forkJoinPool.submit(new Demo1(1, 10000)); System.out.println(result.get());
forkJoinPool.shutdown();
} }
RecursiveAction 无返回值任务。
RecursiveTask有返回值类型。
aaarticlea/png;base64,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" alt="" />
ForkJoinPool提供了一系列的submit方法,计算任务。ForkJoinPool默认的线程数通过Runtime.availableProcessors()获得,因为在计算密集型的任务中,获得多于处理性核心数的线程并不能获得更多性能提升。
jdk7 并行计算框架Fork/Join的更多相关文章
- JUC组件扩展(二)-JAVA并行框架Fork/Join(一):简介和代码示例
一.背景 虽然目前处理器核心数已经发展到很大数目,但是按任务并发处理并不能完全充分的利用处理器资源,因为一般的应用程序没有那么多的并发处理任务.基于这种现状,考虑把一个任务拆分成多个单元,每个单元分别 ...
- Java并行任务框架Fork/Join
Fork/Join是什么? Fork意思是分叉,Join为合并.Fork/Join是一个将任务分割并行运行,然后将最终结果合并成为大任务的结果的框架,父任务可以分割成若干个子任务,子任务可以继续分割, ...
- JUC组件扩展(二)-JAVA并行框架Fork/Join(四):监控Fork/Join池
Fork/Join 框架是为了解决可以使用 divide 和 conquer 技术,使用 fork() 和 join() 操作把任务分成小块的问题而设计的.主要实现这个行为的是 ForkJoinPoo ...
- JUC组件扩展(二)-JAVA并行框架Fork/Join(二):同步和异步
在Fork/Join框架中,提交任务的时候,有同步和异步两种方式. invokeAll()的方法是同步的,也就是任务提交后,这个方法不会返回直到所有的任务都处理完了. fork方法是异步的.也就是你提 ...
- JUC组件扩展(二)-JAVA并行框架Fork/Join(三):在任务中抛出异常
在java当中,异常一共分为两种.一种是运行时异常,一种是非运行是异常. 非运行时异常:这些异常必须在方法上通过throws子句抛出.或者在方法体内进行try{…}catch{…}来捕获异常. 运行时 ...
- Fork/Join-Java并行计算框架
Java在JDK7之后加入了并行计算的框架Fork/Join,可以解决我们系统中大数据计算的性能问题.Fork/Join采用的是分治法,Fork是将一个大任务拆分成若干个子任务,子任务分别去计算,而J ...
- Java线程(十一):Fork/Join-Java并行计算框架
并行计算在处处都有大数据的今天已经不是一个新奇的词汇了.如今已经有单机多核甚至多机集群并行计算.注意,这里说的是并行,而不是并发.严格的将,并行是指系统内有多个任务同一时候运行,而并发是指系统内有多个 ...
- 聊聊并发(八)——Fork/Join框架介绍
作者 方腾飞 发布于 2013年12月23日 | 被首富的“一个亿”刷屏?不如定个小目标,先把握住QCon上海的优惠吧!2 讨论 分享到:微博微信FacebookTwitter有道云笔记邮件分享 ...
- 转:聊聊并发(八)——Fork/Join框架介绍
1. 什么是Fork/Join框架 Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架. 我们再通过 ...
随机推荐
- 一条命令停止所有lxc容器,删除所有lxc容器
for i in $(virsh -c lxc:/// list | grep -v 'Id' | awk '{print $2}');do virsh -c lxc:/// destroy ${i} ...
- windows 环境下通过运行快速启动程序
在windows环境下,我们可以使用一些系统内置的快捷键来快速启动我们想要的应用程序,我这里举例几个我经常使用的,比如: 快捷键 功能说明 services.msc 查看系统服务 gpedit.ms ...
- Codeforces997C Sky Full of Stars 【FMT】【组合数】
题目大意: 一个$n*n$的格子,每个格子由你填色,有三种允许填色的方法,问有一行或者一列相同的方案数. 题目分析: 标题的FMT是我吓人用的. 一行或一列的问题不好解决,转成它的反面,没有一行和一列 ...
- Matplotlib学习---matplotlib里颜色,标记,线条类型参数的选择(colors, markers, line styles)
颜色(Colors): 基础颜色: character color 'b' blue 'g' green 'r' red 'c' cyan 'm' magenta 'y' yellow 'k' bla ...
- 【BZOJ4872】【SHOI2017】分手是祝愿 期望DP
题目大意 有\(n\)盏灯和\(n\)个开关,初始时有的灯是亮的,有的灯是暗的.按下第\(i\)个开关会使第\(j\)盏灯的状态被改变,其中\(j|i\).每次你会随机操作一个开关,直到可以通过不多于 ...
- 启发式合并&线段树合并/分裂&treap合并&splay合并
启发式合并 有\(n\)个集合,每次让你合并两个集合,或询问一个集合中是否存在某个元素. 我们可以用平衡树/set维护集合. 对于合并两个\(A,B\),如果\(|A|<|B|\),那么 ...
- haar的简单应用(2)
上次对图片进行了人脸识别,这次对摄像头捕获的内容进行识别 直接写注释来解释 import cv2 def CatchUsbVideo(window_name, camera_idx): #定义一个函数 ...
- Shell 流程控制-if 语句
单分支if条件语句 if [ 条件判断式 ] ; then程序fi 例子:判断分区使用率 #!/bin/bash # Author: huangrui (Email:mycheryhr@gmail.c ...
- 自学Python4.7-生成器(方式一:生成器函数)
自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...
- 自学华为IoT物联网_12 Huawei LiteOS基础架构
点击返回自学华为IoT物流网 自学华为IoT物联网_12 Huawei LiteOS基础架构 一.1个Huawei LiteOS Kernel 1.1 huawei LiteOS Kernel基本框架 ...