`

如何充分利用多核CPU,计算很大的List中所有整数的和(转)

    博客分类:
  • java
阅读更多
  1. public class CountSumWithCallable {   
  2.   
  3.     /**  
  4.      * @param args  
  5.      * @throws InterruptedException   
  6.      * @throws ExecutionException   
  7.      */  
  8.     public static void main(String[] args) throws InterruptedException, ExecutionException {   
  9.         int threadCounts =19;//使用的线程数   
  10.         long sum=0;   
  11.         ExecutorService exec=Executors.newFixedThreadPool(threadCounts);   
  12.         List<Callable<Long>> callList=new ArrayList<Callable<Long>>();   
  13.         //生成很大的List   
  14.         List<Integer> list = new ArrayList<Integer>();   
  15.         for (int i = 0; i <= 1000000; i++) {   
  16.             list.add(i);   
  17.         }   
  18.         int len=list.size()/threadCounts;//平均分割List   
  19.         //List中的数量没有线程数多(很少存在)   
  20.         if(len==0){   
  21.             threadCounts=list.size();//采用一个线程处理List中的一个元素   
  22.             len=list.size()/threadCounts;//重新平均分割List   
  23.         }   
  24.         for(int i=0;i<threadCounts;i++){   
  25.             final List<Integer> subList;   
  26.             if(i==threadCounts-1){   
  27.                 subList=list.subList(i*len,list.size());   
  28.             }else{   
  29.                 subList=list.subList(i*len, len*(i+1)>list.size()?list.size():len*(i+1));   
  30.             }   
  31.             //采用匿名内部类实现   
  32.             callList.add(new Callable<Long>(){   
  33.                 public Long call() throws Exception {   
  34.                     long subSum=0L;   
  35.                     for(Integer i:subList){   
  36.                         subSum+=i;   
  37.                     }   
  38.                     System.out.println("分配给线程:"+Thread.currentThread().getName()+"那一部分List的整数和为:\tSubSum:"+subSum);   
  39.                     return subSum;   
  40.                 }   
  41.             });   
  42.         }   
  43.         List<Future<Long>> futureList=exec.invokeAll(callList);   
  44.         for(Future<Long> future:futureList){   
  45.             sum+=future.get();   
  46.         }   
  47.         exec.shutdown();   
  48.         System.out.println(sum);   
  49.     }   
  50.   
  51. }  
分享到:
评论

相关推荐

    并行计算简介和多核CPU编程Demo.pdf

    “并行计算简介和多核CPU编程Demo.pdf” 该资源主要介绍了并行计算的概念、多核CPU编程的 Demo 及其实现。下面是从该资源中提取的知识点: 并行计算简介 并行计算是计算机科学中的一种技术,通过将计算任务分解成...

    基于多核CPU的并行计算设计

    ### 基于多核CPU的并行计算设计 #### 概述 随着现代科学技术的快速发展,特别是计算机硬件性能的显著提升,对于高效并行计算的需求变得日益迫切。多核处理器技术的出现和发展,为提高计算效率提供了新的可能。本文...

    visual c++让多核CPU占用率达到100%

    在编程领域,尤其是在高性能计算和并行处理中,利用多核CPU的全部能力是一项关键任务。Visual C++作为Microsoft提供的C++开发环境,提供了一种强大的工具——OpenMP(Open Multi-Processing),来帮助程序员实现多...

    利用多cpu或多核cpu求解deform3d案例

    通过对Deform3D软件中多CPU/多核CPU配置方法的学习,我们不仅能够充分利用现有硬件资源提高计算效率,还能更深入地理解高性能计算领域的基础知识和技术要点。希望本篇文章能为您提供有价值的信息和支持,帮助您更好...

    充分发挥cpu多核性能

    在Windows XP时期,由于操作系统对多核处理的支持相对较弱,因此,用户可能会遇到双核CPU性能未被充分利用的问题。描述中提到的“xp3下发挥双核的性能”,指的是在Windows XP Service Pack 3(xp3)这个版本下,通过...

    多核CPU测试工具(PI)

    标题中的“多核CPU测试工具(PI)”以及描述中提到的“CPU测试”和“多线程测试多核CPU的工具”暗示了我们要讨论的是针对计算机处理器性能进行评估的工具,特别是那些能够利用多核心处理器并行计算能力的测试软件。...

    linux-让多核CPU达到指定的CPU使用率脚本

    "linux-让多核CPU达到指定的CPU使用率脚本"是一个旨在提升机器CPU使用率的实用工具,它能帮助系统管理员更好地控制和利用计算资源。下面我们将详细探讨相关知识点。 1. **CPU使用率**: - CPU使用率是指CPU在单位...

    基于多核CPU的并行计算设计.pdf

    在这种背景下,如何充分利用单机多核CPU的硬件优势,提高大型计算任务的性能和效率,成为了一个重要的研究方向。 多线程技术是实现单机多核并行计算的核心手段。通过对不同线程数量的测试,可以观察到当线程数量...

    多核cpu和gpu系统上椭圆曲线点乘并行计算研究.pdf

    多核cpu和gpu系统上椭圆曲线点乘并行计算研究.pdf

    AMD多核CPU补丁XP专用1.3.2.0053版

    在早期的操作系统如Windows XP中,对于多核处理器的支持并不完善,可能导致某些程序无法充分利用多核优势,甚至出现运行不稳定、性能下降或崩溃的情况。这个补丁的出现,旨在优化系统对AMD多核CPU的识别和管理,以...

    WindowsVC++获取多核CPU各核使用率

    《Windows系统CPU内存网络性能统计第三篇 CPU 多核CPU各核使用率 C#》 http://blog.csdn.net/morewindows/article/details/8678382 配套程序,能获取多核CPU各核的使用率,已经测试,能在WinXP及Win7运行。

    用微机多核CPU并行方式运转WRF模式.pdf

    本文主要探讨了如何利用微机多核CPU的并行方式运行Weather Research and Forecasting (WRF)模式,这是一种用于大气科学中的区域中尺度数值预报模型。文章指出,随着WRF模式分辨率的提高,对计算能力的需求呈量级式...

    面向多核CPU和GPU平台的数据库星形连接优化.pdf

    该算法通过将数据组织成向量形式,利用多核CPU和GPU的并行计算能力,减少数据处理中的数据移动和内存访问,从而降低连接操作的物化代价。向量化技术可以有效提升处理速度,特别是在多核环境下,通过并行处理大量数据...

    MS图像分割在GPU和多核CPU上运行性能研究.pdf

    但是,GPU和多核CPU在MS图像分割中的应用也存在一些挑战和限制,例如数据传输和存储、算法优化、并行计算等。 本研究旨在探讨MS图像分割在GPU和多核CPU上运行性能的研究,旨在探讨两种平台在MS图像分割中的应用和...

    matlab开发-多核的多准备处理

    在MATLAB中进行多核的多任务预处理是提高计算效率和速度的重要手段。这个压缩包文件集合提供了在多个核心或机器上实现并行处理的功能,尤其适用于控制系统的设计与分析,其中涉及到的关键知识点如下: 1. **并行...

    windows系统多核CPU内核线程管理

    然而,传统的单核处理器设计的操作系统和应用程序并未充分利用多核处理器的优势,尤其是在实时性和资源分配方面存在局限性。Windows操作系统,作为全球最广泛使用的桌面操作系统之一,其多核CPU内核线程管理机制对于...

    基于多核CPU的并行程序在指控系统中的应用.pdf

    本资源主要介绍了基于多核CPU的并行程序在指控系统中的应用,包括多核处理器的背景和原理、并行程序设计在指控系统中的应用前景,以及基于多核CPU的并行程序的性能验证和分析。 关键词:多核CPU、并行程序设计、...

Global site tag (gtag.js) - Google Analytics