美文网首页
并发下线程池的最佳数量计算

并发下线程池的最佳数量计算

作者: Jeffery大侠 | 来源:发表于2019-01-04 09:57 被阅读0次

参考文章:https://blog.csdn.net/qq_34417408/article/details/78895573

根据CPU核心数确定线程池并发线程数

1:为什么使用线程池:在高并发的情况下采用线程池,有效的降低了线程创建释放的时间花销及资源开销,如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存以及”过度切换”。(在JVM中采用的处理机制为时间片轮转,减少了线程间的相互切换) 。

2:两派公式

第一派:《Java Concurrency in Practice》即《java并发编程实践》:

        Nthreads=Ncpu*Ucpu*(1+w/c),其中

        Ncpu=CPU核心数

        Ucpu=cpu使用率,0~1

        W/C=等待时间与计算时间的比率

第二派:《Programming Concurrency on the JVM Mastering》即《Java 虚拟机并发编程》

线程数=Ncpu/(1-阻塞系数):其中计算密集型阻塞系数为0,IO密集型阻塞系数接近1:

结论就是:

两个公式其实在IO密集型,计算密集型可以统一:

IO密集型=2Ncpu(可以测试后自己控制大小,2Ncpu一般没问题)(常出现于线程中:数据库数据交互、文件上传下载、网络数据传输等等)

计算密集型=Ncpu(常出现于线程中:复杂算法)

java中:Ncpu=Runtime.getRuntime().availableProcessors()

相关文章

  • 多线程 | 4.线程池

    Java并发编程:线程池的使用 线程池基础 请求队列 线程池维护一定数量的线程,当线程池在运行状态的线程数量达上...

  • 并发下线程池的最佳数量计算

    参考文章:https://blog.csdn.net/qq_34417408/article/details/78...

  • 线程池详解

    线程池的使用 1. 为什么使用线程池? 并发的线程数量很多,并且每个执行时间都很短,这样频繁创建线程和销毁...

  • Java线程池

    为什么要用线程池 复用线程,节省创建和销毁线程的消耗 控制并发数量,并发量过多会导致大量的时间花费在线程切换上 对...

  • JAVA并发编程:线程池Executors(JDK1.7)

    Java中对线程池提供了很好的支持,有了线程池,我们就不需要自已再去创建线程。如果并发的线程数量很多,并且每个线程...

  • 线程池的作用

    线程池作用就是限制系统中执行线程的数量。 根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了...

  • 详解Java中ThreadPool的使用

    线程池就是限制系统中执行线程的数量。我们可以根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少...

  • 线程池

    线程池作用就是限制系统中执行线程的数量。根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了浪...

  • Android中线程池使用

    为什么使用线程池 减少创建线程数量,提高APP性能 (减少创建和销毁线程的性能开销) 节省开销,防止并发线程过多,...

  • JUC-ThreadPool

      线程池:控制运行的线程数量,底层是阻塞队列。 线程复用(降低资源损耗) 控制最大并发数(提高响应速度) 管理线...

网友评论

      本文标题:并发下线程池的最佳数量计算

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