美文网首页java
线程池大小的选择

线程池大小的选择

作者: 修行者12138 | 来源:发表于2020-06-21 20:21 被阅读0次

任务可以分为CPU密集型任务,IO密集型任务与混合型任务。

对于CPU密集型任务,线程本身可以充分利用CPU,线程池太大反而增加线程切换的开销。

对于IO密集型任务,等待IO的过程中,线程会被挂起,如果线程池定义的太小,大部分线程都被挂起,CPU就得不到充分利用,新的请求过来,也容易没有线程可用。

对于混合型任务,可以把任务分为CPU密集型和IO密集型,然后分别选择线程池。

那么,线程池的大小具体该设置多少呢,需要了解cpu数、核心数、线程数的关系

cpu数是物理概念,指处理器的个数

核心数也是物理概念,一个cpu可以有多个内核

线程数是逻辑概念,
如果是看一个电脑最多能开几个线程,那取决于内存大小,一个线程大约要1M内存,与cpu数和核心数没有关系。
但是是看一个电脑同一时刻能执行几个线程,要看有没有开超线程(HT, Hyper-Threading)
如果没有开超线程,1个单核cpu同一时刻只能执行1个线程,1个n核cpu同一时刻只能执行n个线程。
如果开了超线程(同一个核心可以同时执行2个线程),1个单核cpu同一时刻可以执行2个线程,1个n核cpu同一时刻只能执行n * 2个线程

如果是CPU密集型任务,线程池大小公式:
cpu数 * 核心数 * 2(如果有超线程)

如果是IO密集型或混合型任务,线程池大小大概是上述公式的2-3倍

相关文章

  • java----线程池

    什么是线程池 为什么要使用线程池 线程池的处理逻辑 如何使用线程池 如何合理配置线程池的大小 结语 什么是线程池 ...

  • 26-设置线程池的大小

    设置线程池的大小 线程池的理想大小取决于将要提交的任务类型和所部署系统的特性。 为了正确的定制线程池的大小,你需要...

  • 线程池核心参数

    线程池核心参数 1)corePoolSize(线程池基本大小) 2)maximumPoolSize(线程池最大数量...

  • GCD创建线程数的上限

    检查GCD线程池大小的代码 结果 推论: GCD最多只能新建64个线程,即GCD线程池大小为64。 64个线程编号...

  • java中的线程池

    线程池创建的参数 线程池的基本大小(核心线程数) 任务队列(ArrayBlockingQueue/LinkedBl...

  • JAVA多线程

    线程池ThreadPoolExecutor corepoolsize:核心池的大小,默认情况下,在创建了线程池之后...

  • java JDK并发包-线程池

    1.线程池种类 1).newFixedThreadPool //固定大小线程池 2).newSingleThr...

  • 9.jdk线程池详解及实际运用

    4.线程池 参数 1)corePoolSize: 线程池的基本大小,当提交一个任务到线程池中,线程池会创建一个线程...

  • 线程池大小的设置

    线程池大小的设置 这其实是一个面试的考点,很多面试官会问你线程池coreSize 的大小来考察你对于线程池的理解。...

  • 线程池的大小

    备注:在阿里校招面试中遇到的问题 CPU 限制的应用程序 CPU 限制的应用程序,线程池的大小应该等于系统里面 C...

网友评论

    本文标题:线程池大小的选择

    本文链接:https://www.haomeiwen.com/subject/ytrlghtx.html