`
annan211
  • 浏览: 456561 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java 高性能运算--量化线程池的大小

 
阅读更多

   线程池合理的长度取决于将要提交的任务类型和所部署系统的特征。
     为了正确的定制线程池的长度,你需要理解你的计算环境、资源预算和任务的自身特性。部署系统中安装了多少个CPU?多少内存?任务主要执行的是计算、I/O还是一些混合操作?它们是否需要像JDBC Connection这样的稀缺资源?如果你有不同类别的任务,它们拥有差别很大的行为,那么应该考虑使用多个不同的线程池,这样每个线程池可以根据不同任务的工作负载进行调节。
      对于计算密集型的任务,一个有Ncpu 个处理器的系统通常通过使用一个Ncpu +1个线程的线程池来获得最优的利用率(计算密集型的线程恰好在某时因为发生一个页错误或者因为其他原因而暂停,刚好有一个“额外”的线程,可以确保在这样的情况下CPU周期不会中断工作)。对于包含了I/O和其他阻塞操作的任务,不是所有的线程都会在所有的时间被调度,因此你需要一个更大的池。为了正确地设置线程池的长度,你必须估算出任务花在等待的时间与用来计算的时间的比率;这个估算值不必十分精确,而且可以通过一些监控工具获得。你还可以选择另一种方法来调节线程池的大小,在一个基准负载下,使用不同大小的线程池运行你的应用程序,并观察CPU利用率的水平。

  线程池大小 对于系统运行效率来说至关重要,我们可以给出一个估算线程池大小的经验公式。


   Ncpu = CPU的数量
   Ucpu = 目标CPU的使用率(0<=Ucpu<=1)
   W/C = 等待时间与计算时间的比率

   为保持处理器达到期望的使用率,最优的线程池的大小等于
   
    NThreads = Ncpu * Ucpu *(1+W/C)

   可以通过 Runtime.getRuntime().availableProcessors(); 获取CPU的数量。
 
分享到:
评论

相关推荐

    四则运算--Java、C语言.txt

    四则运算--Java、C语言 代码(记事本保存)。点个赞再走啊,客官~ 四则运算--Java、C语言 代码(记事本保存)。点个赞再走啊,客官~ 四则运算--Java、C语言 代码(记事本保存)。点个赞再走啊,客官~ 四则运算--Java...

    JAVA数学库colt-1.2.0

    这个库提供了大量的高级数据结构和算法,支持高性能的数值处理,尤其在矩阵运算、随机数生成、统计分析以及线性代数等领域表现突出。在1.2.0版本中,`colt`进一步提升了性能和稳定性,使其成为Java开发者在进行复杂...

    java复数四则运算-类的定义与对象.rar

    1. 编写一个类实现复数的运算。 复数类ComplexNumber的属性: m_dRealPart:实部,代表复数的实数部分。 m_dImaginPart:虚部,代表复数的虚数部分。 复数类ComplexNumber的方法: ComplexNumber():构造函数,...

    高性能运算技术-CUDA

    有关CUDA介绍的简单文档。 适合于编写CUDA论文和做PPT的一些资源

    java源码包---java 源码 大量 实例

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...

    java郑java02-数据类型与运算.rar

    java郑java02-数据类型与运算.rar

    java性能的优化-如何提高java运行效率

    - 运算性能:哪种算法执行效率更高。 - 内存分配:程序运行时需要多少内存才能达到最佳效率。 - 启动时间:程序启动所需的时间。 - 可伸缩性:在高用户负载下的程序表现。 - 用户感知:用户如何评估程序性能。 ...

    【IT十八掌徐培成】Java基础第02天-04.运算符-移位运算-逻辑运算.zip

    Java语言是目前广泛应用的编程语言之一,其丰富的特性和强大的功能深受程序员喜爱。在学习Java的过程中,...运算符-移位运算-逻辑运算.avi`这个视频教程,你将能更深入地理解这些主题,并能够灵活应用到自己的项目中。

    大整数的四则运算----高质量C语言程序.doc

    大整数的四则运算----高质量C语言程序.doc

    JAVA高性能高并发服务器架构pdf文档视频资源

    首先,"JAVA高性能"是指Java平台在处理大量请求和运算时,能够保持高效运行的能力。这主要得益于JVM(Java虚拟机)的优化,包括垃圾回收机制、多线程支持和Just-In-Time(JIT)编译器等。JIT编译器能够在运行时将...

    lolyd-max.zip_Lloyd_Lloyd-Max量化_LloydMax_lolyd 矢量化_matlab quanti

    在IT领域,量化是一种重要的数据处理技术,特别是在信号处理、图像处理和数字通信中。Lloyd-Max量化是其中一种高效的量化算法,它基于最大均方误差(MSE)最小化的原则来设计量化器,从而在有限的表示精度下尽可能...

    JAVA数学库commons-math3

    Java数学库Apache Commons Math 3.5是Java开发者在处理各种数学和统计计算时的一个强大工具。这个库提供了大量的类和方法,支持广泛的数学运算,包括线性代数、随机数生成、概率统计、最优化问题、特殊函数等。下面...

    GPU高性能运算之CUDA源代码

    《GPU高性能计算之CUDA》书中实例源代码,经调试正常。GPU高性能计算系列丛书的第一本《GPU高性能计算之CUDA》已经出版,由张舒,褚艳利,赵开勇,张钰勃所编写。GPU高性能运算之CUDA---源代码

    java 线程池

    ### Java线程池详解 #### 一、线程与线程池的概念 在Java中,线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。一个进程(例如某个Java应用)至少有一个线程,如果线程...

    125集专攻JAVA基础 JAVA零基础入门学习视频教程 动力节点JAVA视频教程.txt

    北京动力节点-Java编程零基础教程-067-Java基本语法-数据类型转换-大小容量数据混合运算.avi 北京动力节点-Java编程零基础教程-068-Java基本语法-数据类型转换-int向byte、short、char型变量赋值.avi 北京动力...

    How Java’s Floating-Point Hurts Everyone Everywhere

    Darcy撰写,最初于1998年在斯坦福大学举办的ACM Java高性能网络计算研讨会上发表。 文章主要分为几个部分:摘要、概述、两个残酷的误解、复杂的算术类示例、矩阵乘法加速的重要性、自我约束、可重复性与可控性、...

    C#和Java矩阵相乘运算性能比较

    本文旨在通过对C#和Java进行对比研究,特别是针对其可移植性和运算速度,帮助读者更深入地理解这两种语言的特点,并通过矩阵相乘这一具体任务来量化评估它们的性能表现。 #### 可移植性 - **Java**:Java语言以其...

    java二进制运算器(加、见、乘、除)

    在Java编程语言中,二进制运算是一种基础且重要的概念,尤其对于计算机科学的理解和算法设计至关重要。二进制运算器通常是指一个程序或工具,它能够执行针对二进制数的基本算术运算,如加法、减法、乘法和除法。在这...

    JAVA MATCH 类库---JMathLib

    1. **数学运算**: JMathLib提供了一系列用于复杂数学运算的方法,包括但不限于矩阵运算、微积分、线性代数、概率统计、数值分析等。这些功能使得开发者能够方便地在Java程序中处理复杂的数学问题。 2. **图形化界面...

Global site tag (gtag.js) - Google Analytics