2 ws861227 WS861227 于 2013.07.07 16:11 提问

并行框架(fork-join)请教

请教大家一个问题,小弟用java7的fork-join框架编了一个并行程序,2核和4核环境下加速比达到1.95和3.85,但是,当核数达到8或8以上时,CPU使用率就很低(分解12个任务在12核上计算,CPU使用率才65%),这是为啥?

小弟的并行程序框架如下:

while(){
for(){
fork-join();
}
}

也就是说小弟fork-join()方法多次调用(只有那一层循环里面可以并行计算),这样是不是会有影响?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Java线程(十一):Fork/Join-Java并行计算框架
并行计算在处处都有大数据的今天已经不是一个新鲜的词汇了,现在已经有单机多核甚至多机集群并行计算,注意,这里说的是并行,而不是并发。严格的将,并行是指系统内有多个任务同时执行,而并发是指系统内有多个任务同时存在,不同的任务按时间分片的方式切换执行,由于切换的时间很短,给人的感觉好像是在同时执行。 Java在JDK7之后加入了并行计算的框架Fork/Join,可以解决我们系统中大数据计算的性能问题。
java7并行计算框架Fork/Join
拆分fork+合并join。jdk1.7整合Fork/Join,性能上有大大提升。思想:充分利用多核CPU把计算拆分成多个子任务,并行计算,提高CPU利用率大大减少运算时间当你在ForkJoinPool中执行ForkJoinTask时,你可以使用同步或异步方式来实现。当你使用同步方式时,提交任务给池的方法直到提交的任务完成它的执行,才会返回结果。当你使用异步方式时,提交任务给执行者的方法将立即返回,
并行编程之Fork/Join框架
一、概述:        在实际情况中,很多时候我们都需要面对经典的“分治”问题。要解决这类问题,主要任务通常被分解为多个任务块(分解阶段),其后每一小块任务被独立并行计算。一旦计算任务完成,每一快的结果会被合并或者解决(解决阶段)。“分治”问题可以很容易地通过Callable线程的Executor接口来解决。通过为每个任务实例化一 个Callable实例,并在ExecutorService类中
【JDK】:Fork-Join框架
概述前面的文章【JDK】:Executor框架提到Executor框架,而Fork-Join框架也与Executor框架相关的多线程并行运算的框架。Fork-Join框架有自己的适用范围。如果一个应用能被分解成多个子任务,并且组合多个子任务的结果就能够获得最终的答案,那么这个应用就适合用 Fork-Join框架模式来解决。下图给出了一个 Fork-Join框架模式的示意图,位于图上部的 Task 依
Java7 Fork-Join 框架:任务切分,并行处理
概要 现代的计算机已经向多CPU方向发展,即使是普通的PC,甚至现在的智能手机、多核处理器已被广泛应用。在未来,处理器的核心数将会发展的越来越多。 虽然硬件上的多核CPU已经十分成熟,但是很多应用程序并未这种多核CPU做好准备,因此并不能很好地利用多核CPU的性能优势。 为了充分利用多CPU、多核CPU的性能优势,级软基软件系统应该可以充分“挖掘”每个CPU的计算能力,决不能让某个CPU
Java并行计算Fork/Join框架使用
背景介绍假如目前有个需求,计算1000个数字之和,此需求是不是很简单,一次循环,即可完成计算;但如果是计算100W甚至更多的呢?当然,此时的循环依然可以达到目的,但效率就不敢恭维;同时,如果此时有个需求,需要统计100个文件中某个单词出现的次数呢?最直接的办法也是依次循环这100个文件,最终统计到结果,更好一步,你应该想到了线程池处理,起10个线程,每个线程读10个文件统计,这样效率就提升10倍左右
Java并发编程核心方法与框架-Fork-Join分治编程(一)
在JDK1.7版本中提供了Fork-Join并行执行任务框架,它的主要作用是把大任务分割成若干个小任务,再对每个小任务得到的结果进行汇总,这种开发方法也叫做分治编程,可以极大地利用CPU资源,提高任务执行的效率。 使用RecursiveAction分解任务 public class MyRecursiveAction extends RecursiveAction { private
fork-join框架
以下内容选自《JAVA核心技术卷Ⅰ》14.9.4 有些应用使用了大量线程,但其中大多数都是空闲的。举例来说,一个Web服务器可能会为每个连接分别使用一个线程。另外一些应用可能对每个处理器内核分别使用一个线程,来完成计算密集型任务,如图像或视频处理。Java SE 7中新引入了fork-join框架,专门用来支持后一类应用。代码:import java.util.concurrent.ForkJoi
java并发之Fork/Join框架
1.什么是Fork/Join框架 Fork/Join框架是用来提供并行执行的框架,特点就是把一个大任务分成若干个小任务来执行,最后把那些小任务的结果汇总成整个任务的结果。 2.工作窃取算法的介绍 工作窃取算法的作用就是指某个线程从其他队列里窃取任务来执行。原理:就是如果我们有一个大的任务需要执行,先会把大任务分割成若干个子任务A,BC,D,E.....。然后将子任务分别放到不同的队列中,如A
Fork-Join框架
在JDK1.7引入了一种新的并行编程模式“fork-join”,它是实现了“分而治之”思想的Java并发编程框架。网上关于此框架的各种介绍很多,本文从框架特点出发,通过几个例子来进行实用性的介绍。1 fork-join框架的特点fork-join框架对新手来说很难理解,因此先从它的特点说起,它有几个特点: 它对问题的解决思路是分而治之,先将一个问题fork(分为)几个子问题,然后子问题又分为孙子问